Abstract:
In an approach to caller ID verification by digital signature, a computing device receives authenticating information associated with a caller. The computing device creates a call record based on the authenticating information. The computing device retrieves additional information associated with the caller. The computing device updates the call record based on the additional information. The computing device retrieves a digital signature associated with the caller. The computing device retrieves public key information associated with the caller. The computing device performs a digital signature assessment based on the public key information. The computing device updates the call record based on the digital signature assessment. The computing device adds timestamp information to the call record. The computing device receives a request from a call recipient device. The computing device communicates information based on the call record to the call recipient device. The computing device marks the call record as expired.

Description:
TECHNICAL FIELD OF THE INVENTION 
     The present invention relates generally to the field of telecommunication fraud prevention, and more particularly to caller identification (caller ID) verification. 
     BACKGROUND OF THE INVENTION 
     In the past, when phone carriers were limited in number and easily identified, a call recipient could generally trust the information transmitted by caller ID services. Today, Voice over IP (VoIP) providers and fraudulent caller ID providers make it easier for callers, often criminally motivated, to provide falsifying information to the recipient in a spoofing attack. Additional measures that validate caller ID can help to protect the call recipient from misplacing his or her trust in an unauthorized party. 
     SUMMARY 
     According to one embodiment of the present invention, a computer-implemented method for verifying an identity of a caller is provided. The computer-implemented method comprises: receiving, by one or more computer processors, authenticating information associated with a caller, wherein the authenticating information comprises a password, caller ID information, a caller phone number, a recipient phone number, and a URL; creating, by one or more computer processors, a call record based on the authenticating information; retrieving, by one or more computer processors, additional information associated with the caller; updating, by one or more computer processors, the call record based on the additional information associated with the caller; retrieving, by one or more computer processors, based on interfacing with the URL, a digital signature associated with the caller; retrieving, by one or more computer processors, public key information associated with the caller; performing, by one or more computer processors, a digital signature assessment based on the public key information, wherein the digital signature assessment comprises a determination that the digital signature is valid, not valid, or unverifiable; updating, by one or more computer processors, the call record based on the digital signature assessment; adding, by one or more computer processors, timestamp information to the call record; receiving, by one or more computer processors, a request from a call recipient device; communicating, by one or more computer processors, information based on the call record to the call recipient device; and marking, by one or more computer processors, after a predefined length of time from the addition of the timestamp, the call record as expired. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1A-C  are diagrams of a first, second, and third network environment, respectively, in accordance with embodiments of the present invention; 
         FIG. 2  is a flowchart depicting operational steps of a client device-based digital signature verification method, in accordance with an embodiment of the present invention; 
         FIG. 3  is a flowchart depicting operational steps of a server-based digital signature verification method, in accordance with an embodiment of the present invention; and 
         FIG. 4  is a block diagram of internal and external components of an auxiliary computing device, a mobile device, and a server device in the network environments of  FIGS. 1A, 1B, and 1C , respectively, in accordance with embodiments of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
     The present invention is an approach to caller authentication that validates a caller ID, supplementing it with verification of a separate digital signature to determine whether the received caller ID information is accurate. Other approaches to caller ID validation work by building trusted covert channels between end users, which allow a call recipient device to request validation from the purported caller device; by using voice recognition to verify caller identity; or by requiring that the caller answer security questions at the beginning of a call. Some of these approaches specifically contemplate an organization as the call recipient and an individual as the caller. Embodiments of the present invention can provide assistance to various types of call recipients, not limited to organizations receiving calls from unknown individuals, by obtaining and communicating easy-to-comprehend information on whether or not the recipient&#39;s caller ID service is providing accurate information. 
     Embodiments of the present invention are described herein with reference to the Figures.  FIG. 1A  is a functional block diagram illustrating a first network environment  100  in accordance with one embodiment of the present invention. Network environment  100  includes network  102 , caller device  104 , recipient device  106 , auxiliary computing device  108 , digital signature verification component  110 , telecommunication service provider  112 , certificate server  114 , and Certification Authority  116 . 
     Caller device  104  and recipient device  106  are interconnected over network  102 . Network  102  can be, for example, a telecommunications network, a local area network (LAN), a wide area network (WAN), such as the Internet, or a combination of more than one of the three, and can include wired, wireless, or fiber optic connections. Network  102  can include one or more wired and/or wireless networks capable of receiving and transmitting data, voice, and/or video signals, including multimedia signals that include voice, data, and video information. In general, network  102  can be any combination of connections and protocols that support communications between caller device  104 , recipient device  106 , and other devices (not shown) within an environment such as network environment  100 . 
     Caller device  104  can be interconnected over network  102  with systems of telecommunication service provider  112 . Telecommunication service provider  112  can be an incumbent local exchange carrier, a competitive local exchange carrier (CLEC), a mobile wireless communication company, or any communications service provider responsible for the acceptance and transmission of communications such as those between caller device  104 , recipient device  106 , and other devices (not shown) interconnected over network  102 . 
     Caller device  104  can be a fixed line telephone, a mobile phone, or any device capable of communicating with recipient device  106  and other devices (not shown) over network  102 . 
     Recipient device  106  can be a fixed line telephone such as a hard-wired or cordless telephone, or any device capable of connecting to network  102  by a telephone line. Recipient device  106  is communicatively interconnected with auxiliary computing device  108 . 
     Auxiliary computing device  108  can be any programmable electronic device capable of executing machine-readable instructions and communicating with various components and devices within network environment  100 . Auxiliary computing device  108  includes digital signature verification component  110 , which performs steps of a client device-based digital signature verification method as described herein with reference to  FIG. 2 . Auxiliary computing device  108  can include internal and external hardware components, as depicted and described in further detail with respect to  FIG. 4 . 
     Certificate server  114  can be a server system that is capable of providing a digital signature on behalf of caller device  104  to auxiliary computing device  108  and other devices (not shown) within network environment  100 . Certificate server  114  can be interconnected with auxiliary computing device  108 , Certification Authority  116 , and other devices (not shown) over network  102 . 
     Certification Authority  116  can be a trusted third party system capable of issuing digital certificates, also known as public key certificates, that can be used to verify a digital signature provided on behalf of caller device  104  to auxiliary computing device  108  and other devices (not shown) within network environment  100 . Certification Authority  116  can be interconnected with auxiliary computing device  108 , certificate server  114 , and other devices (not shown) over network  102 . 
       FIG. 1B  is a functional block diagram illustrating a second network environment  120  in accordance with another embodiment of the present invention.  FIG. 1B  includes network  102 , caller device  104 , recipient device  122 , digital signature verification component  110 , telecommunication service provider  112 , certificate server  114 , and Certification Authority  116 . 
     Caller device  104  and recipient device  122  are interconnected over network  102 . Recipient device  122  can be a mobile phone such as a smartphone, or any device capable of connecting wirelessly to network  102 , and capable of executing machine-readable instructions and communicating with various components and devices within network environment  120 . Recipient device  122  includes digital signature verification component  110 , which performs steps of a client device-based digital signature verification method as described herein with reference to  FIG. 2 . Recipient device  122  can include internal and external hardware components, as depicted and described in further detail with respect to  FIG. 4 . 
       FIG. 1C  is a functional block diagram illustrating a third network environment  140  in accordance with another embodiment of the present invention. Network environment  140  includes network  102 , caller device  104 , recipient device  142 , server system  144 , digital signature verification component  146 , registration component  148 , processing component  150 , telecommunication service provider  112 , certificate server  114 , and Certification Authority  116 . 
     Caller device  104  and recipient device  142  are interconnected over network  102 . Recipient device  142  can be a fixed line telephone, a mobile phone, or any device capable of communicating with caller device  104  over network  102  and capable of, independently or in communicative connection with a computing component such as but not limited to an auxiliary computing device, executing machine-readable instructions and communicating with various components and devices within network environment  140 . 
     Server system  144  can be a server system capable of communicating with caller device  104 , recipient device  142 , certificate server  114 , Certification Authority  116 , and other devices (not shown) across network  102 , and capable of executing machine-readable instructions. Server system  144  includes digital signature verification component  146 , which includes registration component  148  and processing component  150 , and performs steps of a server-based digital signature verification method as described herein with reference to  FIG. 3 . Server system  144  can include internal and external hardware components, as depicted and described in further detail with respect to  FIG. 4 . 
       FIG. 2  is a flowchart  200  depicting operational steps of a client device-based digital signature verification method performed by digital signature verification component  110  of network environment  100 , in accordance with an embodiment of the present invention. It should be noted that the steps recited herein with reference to digital signature component  110  of network environment  100  are analogous to the steps performed by digital signature verification component  110  in network environment  120 . Accordingly, auxiliary computing device  108  and recipient device  122  have analogous functions in their respective environments. 
     In step  202 , digital signature verification component  110  receives caller ID information associated with a call. In step  204 , digital signature verification component  110  receives a URL associated with the call that points to certificate server  114  via network  102 . The URL can be, but need not be, provided as a toll service by telecommunication service provider  112 . The URL employed can be, but need not be, a TinyURL, a shortened version of a longer URL, in order to reduce the amount of data transmitted and thus increase the speed of digital signal verification. 
     In step  206 , digital signature verification component  110  requests the caller&#39;s digital signature from certificate server  114 . In step  208 , digital signature verification component  110  receives the caller&#39;s digital signature from certificate server  114 . In another embodiment, if the caller has chosen to store a digital signature on caller device  104 , obviating the need for a separate certificate server, digital signature verification component  110  can request the caller&#39;s digital signature from caller device  104  in step  206  and receive the caller&#39;s digital signature from caller device  104  in step  208 . 
     In step  210 , digital signature verification component  110  requests the caller&#39;s public key from Certification Authority  116 . If digital signature verification component  110  does not receive the caller&#39;s public key in step  212 , digital signature verification component  110  bypasses step  214  and determines that the caller ID is unverifiable in step  216   a . If digital signature verification component  110  receives the caller&#39;s public key in step  212 , digital signature verification component  110  determines whether the caller&#39;s digital signature corresponds to the public key in step  214 . If the caller&#39;s digital signature corresponds to the public key in step  214 , digital signature verification component  110  determines that the caller ID is valid in step  216   b . If the caller&#39;s digital signature does not correspond to the public key in step  214 , digital signature component  110  determines that the caller ID is invalid in step  216   c.    
     In step  218 , digital signature verification component  110  performs one or more actions based on the digital signature assessment. It should be noted that, although the one or more actions are collectively referred to as step  218  in the interest of simplicity, it is not implied that the actions should occur simultaneously. In step  218 , digital signature verification component  110  can communicate a determination of validity, invalidity, or unverifiable nature of the caller ID to a user. For example, in some embodiments, digital signature verification component  110  can instruct auxiliary computing device  108  to communicate a visual message such as a pictorial icon (e.g., a check-mark signifying validity, an ‘x’ signifying invalidity) on a display. In some embodiments, digital signature verification component  110  can store information about a determination of validity, invalidity, or unverifiable nature in order to allow digital signature verification component  110  to recognize valid caller ID information in the future and bypass one or more of the steps of described with respect to  FIG. 2 . 
       FIG. 3  is a flowchart depicting operational steps of a server-based digital signature verification method performed by digital signature verification component  146  in network environment  140 , in accordance with an embodiment of the present invention. In step  302 , digital signature verification component  146  receives logon information provided by caller device  104 . For example, if caller device  104  is a mobile device with a keypad, digital signature verification component  146  can receive a username and password entered by a caller using the keypad of caller device  104 . 
     In step  304 , registration component  148  of digital signature verification component  146  creates a record to track the call. The record can include information such as, but not limited to, the caller&#39;s phone number; the call recipient&#39;s phone number; and information on the caller&#39;s business, if applicable (e.g., ratings, comments from customers). 
     In step  306 , processing component  150  of digital signature verification component  146  requests the caller&#39;s digital signature from certificate server  114 . In step  308 , processing component  150  receives the caller&#39;s digital signature from certificate server  114 . In another embodiment, if the caller has chosen to store a digital signature on caller device  104 , obviating the need for a separate certificate server, digital signature verification component  146  can request the caller&#39;s digital signature from caller device  104  in step  306  and receive the caller&#39;s digital signature from caller device  104  in step  308 . 
     In step  310 , processing component  150  requests the caller&#39;s public key from Certification Authority  116 . If processing component  150  does not receive the caller&#39;s public key in step  312 , processing component  150  bypasses step  314  and determines that the caller ID is unverifiable in step  316   a . If processing component  150  receives the caller&#39;s public key in step  312 , processing component  150  determines whether the caller&#39;s digital signature corresponds to the public key in step  314 . If the caller&#39;s digital signature corresponds to the public key in step  314 , processing component  150  determines that the caller ID is valid in step  316   b . If the caller&#39;s digital signature does not correspond to the public key in step  314 , processing component  150  determines that the caller ID is invalid in step  316   c.    
     In step  318 , processing component  150  adds information regarding the digital signature assessment (e.g., the determination of validity, invalidity, or unverifiable nature of the digital signature) to the call record. In step  320 , processing component  150  adds timestamp information to the call record. The timestamp can remain valid for a predefined period of time (e.g., 1-2 minutes), after which the record expires. While unexpired, the call record can be requested by recipient device  142 . 
       FIG. 4  depicts a block diagram of components of auxiliary computing device  108  in network environment  100 , recipient device  122  in network environment  120 , or server system  144  in network environment  140 , in accordance with illustrative embodiments of the present invention. In the interest of simplicity, auxiliary computing device  108 , recipient device  122 , and server system  144  are collectively referred to herein as computing device  400 . It should be appreciated that  FIG. 4  is included for the purposes of illustration and does not imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment can be made. 
     Computing device  400  includes communications fabric  402 , which provides communications between computer processor(s)  404 , memory  406 , persistent storage  408 , communications unit  410 , input/output (I/O) interface(s)  412 , and cache  414 . Communications fabric  402  can be implemented with any architecture designed for passing data and/or control information between processors (such as microprocessors, communications and network processors, etc.), system memory, peripheral devices, and any other hardware components within a system. For example, communications fabric  402  can be implemented with one or more buses. 
     Memory  406  and persistent storage  408  are computer readable storage media. In this embodiment, memory  406  includes random access memory (RAM). In general, memory  406  can include any suitable volatile or non-volatile computer readable storage media. Cache  414  is a fast memory that enhances the performance of computer processor(s)  404  by holding recently accessed data, and data near accessed data, from memory  406 . 
     In the interest of simplicity, digital signature verification component  110  of network environment  100 ; digital signature verification component  110  of network environment  120 ; and digital signature verification component  146 , registration component  148 , and processing component  150  of network environment  140  are collectively referred to herein as component(s)  416 . Component(s)  416  is stored in persistent storage  408  for execution by one or more of the respective computer processors  404  via one or more memories of memory  406 . Persistent storage  408  can include a magnetic hard disk drive. Alternatively, or in addition to a magnetic hard disk drive, persistent storage  408  can include a solid state hard drive, a semiconductor storage device, read-only memory (ROM), erasable programmable read-only memory (EPROM), flash memory, or any other computer readable storage media that is capable of storing program instructions or digital information. 
     The media used by persistent storage  408  may also be removable. For example, a removable hard drive may be used for persistent storage  408 . Other examples include optical and magnetic disks, thumb drives, and smart cards that are inserted into a drive for transfer onto another computer readable storage medium that is also part of persistent storage  408 . 
     Communications unit  410 , in these examples, provides for communications with other data processing systems or devices. Communications unit  410  can include one or more network interface cards. Communications unit  410  can provide communications through the use of either or both physical and wireless communications links. Component(s)  416  can be downloaded to persistent storage  408  through communications unit  410 . 
     I/O interface(s)  412  allows for input and output of data with other devices that can be connected to computing device  400 . For example, I/O interface  412  can provide a connection to external devices  418  such as a keyboard, keypad, a touch screen, and/or some other suitable input device. External devices  518  can also include portable computer readable storage media such as, for example, thumb drives, portable optical or magnetic disks, and memory cards. Software and data used to practice embodiments of the present invention, e.g., component(s)  416 , can be stored on such portable computer readable storage media and can be loaded onto persistent storage  408  via I/O interface(s)  412 . I/O interface(s)  412  can also connect to a display  420 . 
     Display  420  provides a mechanism to display data to a user and can be, for example, a touch screen. 
     The programs described herein are identified based upon the application for which they are implemented in a specific embodiment of the invention. However, it should be appreciated that any particular program nomenclature herein is used merely for convenience, and thus the invention should not be limited to use solely in any specific application identified and/or implied by such nomenclature. 
     The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention. 
     The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire. 
     Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device. 
     Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention. 
     Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions. 
     These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks. 
     The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks. 
     The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions. 
     The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The terminology used herein was chosen to best explain the principles of the embodiment, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.