CA2997583C

Systems and methods for detecting and preventing spoofing

Abstract

Techniques for detecting application program spoofing. The techniques include: receiving a communication from an application program executing on a client device different from the at least one computer; identifying from the communication an asserted identity of the application program; and verifying the asserted identity of the application program at least in part by: interacting with the client device to obtain additional information about the application program, and determining whether the additional information about the application program is consistent with the asserted identity of the application program.

CA2997583C, drawing sheet 1
Sheet 1 of 13

Term

9.9 yearsleft in the term

Expires 4 September 2036.

  1. Priority and filed
  2. Granted
  3. Today
  4. Expires

59 claims: 42 independent, 17 dependent

  1. 1
    Claims 1. A method, performed by at least one computer, the method comprising:receiving a communication from an application program executing on a client device different from the at least one computer;identifying from the communication an asserted identity of the application program;determining whether the application program has the asserted identity at least in part by: interacting with the client device to obtain additional information about at least one capability of the application program, the interacting comprising: transmitting, via at least one network to the client device, a software program that, when executed by the client device, collects the additional information about the at least one capability of the application program at least in part by programmatically testing the application program to determine whether the application program is able to recognize an object;and receiving, from the client device, the additional information about the at least one capability of the application program;and determining whether the additional information about the at least one capability of the application program indicates that the application program is able to recognize the object, the determining comprising: comparing the additional information about the at least one capability of the application program to information about one or more application programs having the asserted identity;determining whether the application program has the asserted identity based at least in part on whether the application program is able to recognize the object;granting the client device access to a resource responsive to determining that the application program has the asserted identity;and denying the client device access to the resource responsive to determining that the application program does not have the asserted identity. CA 2997583 2020-01-15
  2. 3
    The method of any one of claims 1 or 2, wherein the software program, when executed by the client device, is configured to programmatically test the at least one capability of the application program at least in part by determining whether the application program is able to recognize an object that the one or more application programs having the asserted identity are able to recognize.
  3. 4
    The method of any one of claims 1 to 3, wherein the software program comprises a JAVASCRIPT program.
  4. 5
    The method of any one of claims 1 to 4, wherein transmitting the software program to the client device is performed based on the asserted identity of the application program identified in the communication.
  5. 6
    The method of any one of claims 1 to 5, wherein the asserted identity of the application program comprises an identity of a web browser application program.
  6. 7
    The method of any one of claims 1 to 6, wherein granting the client device access to the resource comprises granting the client device access to a web page.
  7. 8
    The method of any one of claims 1 to 6, wherein granting the client device access to the resource comprises granting the client device access to a service. CA 2997583 2020-01-15
  8. 9
    A system, comprising:at least one computer;at least one non-transitory computer-readable storage medium storing processorexecutable instructions that, when executed by the at least one computer, causes the at least one computer to perform: receiving a communication from an application program executing on a client device different from the at least one computer;identifying from the received communication an asserted identity of the application program;determining whether the application program has the asserted identity at least in part by: interacting with the client device to obtain additional information about at least one capability of the application program, the interacting comprising: transmitting, via at least one network to the client device, a software program that, when executed by the client device, collects the additional information about the at least one capability of the application program at least in part by programmatically testing the application program to determine whether the application program is able to recognize an object;and receiving, from the client device, the additional information about the at least one capability of the application program;and determining whether the additional information about the at least one capability of the application program indicates that the application program is able to recognize the object, the determining comprising: comparing the additional information about the at least one capability of the application program to information about one or more application programs having the asserted identity;determining whether the application program has the asserted identity based at least in part on whether the application program is able to recognize the object;CA 2997583 2020-01-15 granting the client device access to a resource responsive to determining that the application program has the asserted identity;and denying the client device access to the resource responsive to determining that the application program does not have the asserted identity.
  9. 11
    The system of any one of claims 9 or 10, wherein the software program, when executed by the client device, is configured to programmatically test the at least one capability of the application program at least in part by determining whether the application program is able to recognize an object that the one or more application programs having the asserted identity are able to recognize.
  10. 12
    The system of any one of claims 9 to 11, wherein the software program comprises a JAVASCRIPT program.
  11. 13
    The system of any one of claims 9 to 12, wherein transmitting the software program to the client device is performed based on the asserted identity of the application program identified in the communication.
  12. 14
    The system of any one of claims 9 to 13, wherein the asserted identity of the application program comprises an identity of a web browser application program.
  13. 15
    At least one non-transitory computer-readable storage medium storing processor-executable instructions that, when executed by at least one computer, causes the at least one computer to perform:CA 2997583 2020-01-15 receiving a communication from an application program executing on a client device different from the at least one computer;identifying from the received communication an asserted identity of the application program;and determining whether the application program has the asserted identity at least in part by: interacting with the client device to obtain additional information about at least one capability of the application program the interacting comprising: transmitting, via at least one network to the client device, a software program that, when executed by the client device, collects the additional information about the at least one capability of the application program at least in part by programmatically testing the application program to determine whether the application program is able to recognize an object;and receiving from the client device, the additional information about the at least one capability of the application program;and determining whether the additional information indicates that the application program is able to recognize the object, the determining comprising: comparing the additional information about the at least one capability of the application program to information about one or more application programs having the asserted identity;determining whether the application program has the asserted identity based at least in part on whether the application program is able to recognize the object;granting the client device access to a resource responsive to determining that the application program has the asserted identity;and denying the client device access to the resource responsive to determining that the application program does not have the asserted identity. CA 2997583 2020-01-15
  14. 17
    The at least one non-transitory computer-readable storage medium of any one of claims 15 or 16, wherein the software program, when executed by the client device, is configured to programmatically test the at least one capability of the application program at least in part by determining whether the application program is able to recognize an object that the one or more application programs having the asserted identity are able to recognize.
  15. 18
    The at least one non-transitory computer-readable storage medium of any one of claims 15 to 17, wherein transmitting the software program to the client device is performed based on the asserted identity of the application program identified in the communication.
  16. 19
    The at least one non-transitory computer-readable storage medium of any one of claims 15 to 18, wherein the asserted identity of the application program comprises an identity of web browser application program.
  17. 20
    A method, performed by at least one computer, the method comprising:receiving a communication from a client device different from the at least one computer;identifying from the communication an asserted type of the client device;and determining whether the client device is of the asserted type at least in part by: interacting with the client device to measure an amount of time it takes the client device to perform a task, the interacting comprising: CA 2997583 2020-01-15 providing a software program to the client device for execution by the client device;and measuring an amount of time it takes the client device to execute the software program;determining whether the measured amount of time it takes the client device to perform the task is consistent with the asserted type of the client device, the determining comprising: comparing the measured amount of time for the client device to perform the task to a range of expected performance times for devices of the asserted type;granting the client device access to a resource in response to determining that the client device is of the asserted type;and denying the client device access to the resource in response to determining that the client device is not of the asserted type.
  18. 23
    The method of any one of claims 20 to 22, wherein providing the software program further comprises providing, to the client device, a software program comprising a serial cumulative calculation challenge for execution by the client device. CA 2997583 2020-01-15
  19. 24
    The method of any one of claims 20 to 23, wherein providing the software program further comprises providing, to the client device, a software program comprising a parallel checkpoints calculation challenge for execution by the client device.
  20. 25
    The method of any one of claims 20 to 24, wherein providing the software program further comprises providing, to the client device, a software program comprising a neural network calculation challenge for execution by the client device.
  21. 26
    The method of any one of claims 20 to 25, wherein providing the software program further comprises providing, to the client device, a software program comprising a graphics processing unit calculation challenge for execution by the client device.
  22. 27
    The method of any one of claims 20 to 26, wherein determining whether the measured amount of time it takes the client device to perform the task is consistent with how long it takes client devices of the asserted type to perform the task comprises:accessing information indicating the range of expected performance times, associated with the task, for a population of client devices of the asserted type;and comparing the measured amount of time with the range of expected performance times.
  23. 28
    The method of any one of claims 20 to 27, wherein the communication indicates that the client device is asserted to be a mobile device of a certain type, and wherein determining whether the measured amount of time it takes the client device to perform the task is consistent with the asserted type of the client device comprises determining whether the amount of time it takes the client device to perform the task is consistent with how long it takes mobile devices of the certain type to perform the task. CA 2997583 2020-01-15
  24. 29
    The method of any one of claims 20 to 28, wherein interacting with the client device to measure the amount of time it takes the client device to perform the task is performed in response to receiving the communication from the client device.
  25. 30
    The method of any one of claims 20 to 29, wherein the resource comprises a webpage.
  26. 32
    The method of any one of claims 20 to 31, wherein the software program comprises a JavaScript program.
  27. 33
    A system, comprising:at least one computer;at least one non-transitory computer-readable medium storing processorexecutable instructions that, when executed by the at least one computer, cause the at least one computer to perform: receiving a communication from a client device different from the at least one computer;identifying from the communication an asserted type of the client device;and determining whether the client device is of the asserted type at least in part by: interacting with the client device to measure an amount of time it takes the client device to perform a task, the interacting comprising: providing a software program to the client device for execution by the client device;and measuring an amount of time it takes the client device to execute the software program;CA 2997583 2020-01-15 determining whether the measured amount of time it takes the client device to perform the task is consistent with the asserted type of the client device, the determining comprising: comparing the measured amount of time for the client device to perform the task to a range of expected performance times for devices of the asserted type;granting the client device access to a resource in response to determining that the client device is of the asserted type;and denying the client device access to the resource in response to determining that the client device is not of the asserted type.
  28. 35
    The system of any one of claims 33 or 34, wherein the processor-executable instructions, when executed by the at least one computer, further cause the at least one computer to perform:receiving at least one output from the client device resulting from execution of the software program;and verifying that the at least one output is accurate.
  29. 36
    The system of any one of claims 33 to 35, wherein the resource comprises a webpage.
  30. 37
    At least one non-transitory computer-readable medium storing processorexecutable instructions that, when executed by at least one computer, cause the at least one computer to perform:receiving a communication from a client device different from the at least one computer;CA 2997583 2020-01-15 identifying from the communication an asserted type of the client device;and determining whether the client device is of the asserted type of the client device at least in part by: interacting with the client device to measure an amount of time it takes the client device to perform a task, the interacting comprising: providing a software program to the client device for execution by the client device and measuring an amount of time it takes the client device to execute the software program;determining whether the measured amount of time it takes the client device to perform the task is consistent with the asserted type of the client device, the determining comprising: comparing the measured amount of time for the client device to perform the task to a range of expected performance times for devices of the asserted type;granting the client device access to a resource in response to determining that the client device is of the asserted type;and denying the client device access to the resource in response to determining that the client device is not of the asserted type.
  31. 39
    The at least one non-transitory computer readable storage medium of any one of claims 37 or 38, wherein the resource comprises a webpage.
  32. 40
    A method for determining legitimacy of a device during a digital interaction with the device, the method comprising:CA 2997583 2020-01-15 receiving, by a computer, a first communication from the device, the first communication including a first device indicator for the device;determining, by the computer, a first device type based on the first device indicator;transmitting, by the computer, a request to the device related to a task for the device to complete;receiving, by the computer, a second communication from the device, the second communication including a response to the request related to the task for the device to complete;determining, by the computer, a characteristic of the second communication, the characteristic corresponding to an amount of time required by the device to complete the task;comparing, by the computer, the characteristic to a device profile related to the first device indicator;determining, by the computer, if the device is of the first device type based on the comparison between the characteristic and the device profile;and denying the device access to a network resource when the device is not the first device type.
  33. 43
    The method of any one of claims 41 or 42, wherein the second task for the device to complete is different than the first task for the device to complete.
  34. 44
    The method of any one of claims 41 to 43, wherein the first task is selected from at least one of:a computational challenge;providing a response to an additional information request;and executing a software program.
  35. 46
    The method of any one of claims 40 to 45, wherein the device profile includes an expected execution time for the task.
  36. 47
    The method of any one of claims 40 to 46, wherein the network resource is a webpage.
  37. 48
    A system for determining legitimacy of a device during a digital interaction with the device, the system comprising:CA 2997583 2020-01-15 a computer;a non-transitory computer-readable storage medium including processorexecutable instructions that, when executed by the computer, cause the computer to: receive a first communication from the device;determine a first device type based on the first communication;transmit a request to the device related to a first task for the device to complete;receive a second communication from the device, the second communication including a response to the request related to the first task for the device to complete;determine an amount of time required by the device to complete the first task;compare the amount of time to a device profile related to the first device indicator;determine if the device is of the first device type based on the comparison between the amount of time and the device profile;and deny the device access to a network resource when the device is not the first device type.
  38. 52
    The system of any one of claims 48 to 51, wherein the first task is selected from at least one of:a computational challenge;providing a response to an additional information request;and executing a software program.
  39. 54
    The system of claim any one of claims 48 to 53, wherein the device profile includes an expected execution time for the task.
  40. 55
    The system of any one of claims 48 to 54, wherein the network resource is a webpage.
  41. 56
    A non-transitory computer-readable storage medium including processor-executable instructions that, when executed by a computer, cause the computer to:receive a first communication from the device, the first communication including a first device indicator for the device;determine a first device type based on the first device indicator;transmit a request to the device related to a first task for the device to complete;CA 2997583 2020-01-15 receive a second communication from the device, the second communication including a response to the request related to the first task for the device to complete;determine an amount of time required by the device to complete the first task;compare the amount of time to a device profile related to the first device indicator;determine if the device is of the first device type based on the comparison between the amount of time and the device profile;and deny the device access to a network resource when the device is not the first device type.
  42. 59
    The non-transitory computer-readable storage medium of any one of claims 56 to 58, wherein the first task is selected from at least one of:a computational challenge;providing a response to an additional information request;and executing a software program.
Independent claims42