The present invention relates to security. More specifically, the present invention relates to a security architecture.
Although the Internet provides a massive opportunity for shared knowledge, it also enables those with malicious intentions to attack such as by stealing personal data or causing interference with properly functioning mechanisms. The Internet and other networks will continue to grow both in size and functionality, and with such growth, security will be paramount.
A security platform architecture is described herein. A user identity platform architecture which uses a multitude of biometric analytics to create an identity token unique to an individual human. This token is derived on biometric factors like human behaviors, motion analytics, human physical characteristics like facial patterns, voice recognition prints, usage of device patterns, user location actions and other human behaviors which can derive a token or be used as a dynamic password identifying the unique individual with high calculated confidence. Because of the dynamic nature and the many different factors, this method is extremely difficult to spoof or hack by malicious actors or malware software.
A security platform architecture is described herein. The security platform architecture includes multiple layers and utilizes a combination of encryption and other security features to generate a secure environment.
The security-hardened code 102 is able to include open or proprietary software security hardening. The security-hardened code 102 includes software libraries, executables, scripts, modules, drivers, and/or any other executable, accessible or callable data.
In some embodiments, the security-hardened code 102 is encrypted. For example, each library, executable and other data is encrypted. Furthering the example, an “encryption at rest” or “data at rest” encryption implementation is utilized. Data at rest encryption means data that is not in transit in a network or data that is not being executed is encrypted. Any data at rest encryption is able to be implemented including quantum encryption.
In some embodiments, the security-hardened code 102 is signed. For example, a digitally signed driver is associated with a digital certificate which enables identification of the publisher/owner of the driver.
In some embodiments, open or proprietary verification is based on encryption/decryption (e.g., the software modules/executables are inside an encrypted container), and is performed at installation and prior to each access. The security-hardened code 102 is fully tamper-proof. To be able to access the security-hardened code 102, a caller (e.g., calling module/procedure) should be part of the security domain.
In some embodiments, runtime verification of each executable, library, driver and/or data is implemented. Runtime verification is able to include any type of analysis of activity such as determining and learning keystrokes per user, or other mannerisms of computer interaction by each user.
In some embodiments, a security callback implementation is utilized. Before data is accessed or executed, the security callback calls to a master/server from the client, and if the hash or other verification implementation on the master/server does not match the hash/verification on the client, then access to the security-hardened code 102 is restricted/denied. For example, if a hash match fails, a software module will not be able to be executed, launched, moved or another action. The hash/verification comparison/analysis occurs before access of the security-hardened code 102. The security callback implementation is able to protect against instances where a virus or other malicious code has infiltrated a client device (e.g., mobile phone, personal computer).
The security-hardened code 102 is able to use any individual security technology or any combination of security technologies.
The security-hardened code 102 is able to be stored in a secure vault. The contents of the vault are encrypted using the data at rest encryption scheme. The contents of the vault are also signed. In some embodiments, white noise encryption is implemented which involves the use of white noise in the encryption. For example, white noise is generated using shift registers and randomizers, and the white noise is incorporated in the encryption such that if someone were to decrypt the content, they would obtain white noise.
The secure network transport 104 is able to be a high-speed, low-overhead, encrypted channel In some embodiments, the secure network transport 104 uses quantum encryption (or post-quantum encryption). Quantum encryption is based on real keys (e.g., real numbers instead of integers) such that the encryption may not be hackable. Quantum encryption such as described in U.S. Provisional Patent Application No. 62/698,644, filed on Jul. 16, 2018, titled: “SECRET MATERIAL EXCHANGE AND AUTHENTICATION CRYPTOGRAPHY OPERATIONS,” and PCT Application No. PCT/US2019/041871, filed on Jul. 15, 2019, titled: “SECRET MATERIAL EXCHANGE AND AUTHENTICATION CRYPTOGRAPHY OPERATIONS,” which are both incorporated by reference herein in their entireties for all purposes, is able to be utilized herein.
In some embodiments, everything that communicates uses the secure network transport 104. For example, when a software module communicates with another software module, information is sent using the secure network transport 104.
The secure network transport 104 is able to utilize a proprietary or open Internet key exchange, Trusted Platform Module (TPM) key processing and storage, IoT key exchange, and/or optical/sonic/infrared/Bluetooth® key exchange.
The security transport and data transformation modules 106 implement “data in motion” encryption and “data at rest” encryption. In some embodiments, encryption is implemented while the data is being accessed/executed. The security transport and data transformation modules 110 include a tunneling module to tunnel the implementation inside Secure Sockets Layer (SSL)/Transport Layer Security (TLS) to enable the data to be utilized on any platform/browser/software/hardware/standard. The tunneling is able to be TLS quantum tunneling. The security transport and data transformation modules 106 include Application Programming Interfaces (APIs), keys, Public Key Infrastructure (PKI) modules, and/or other modules/structures.
The building block modules 108 include processes, services, microservices such as: AUTH, TRANS, LOG, ETRANS, BLUETOOTH, ULTRASONIC, and/or RF, which are implemented using objects (including functions or sub-routines). The building block modules 108 come from the software code/libraries and are able to communicate via the secure network transport 104.
The building block modules 108 are able to communicate between each other. In some embodiments, the module to module communications utilize Qrist encryption transport (or another encryption scheme) which isolates the modules from threats of hacks, viruses and other malicious entities. Qrist transport is high performance and low latency which requires almost no overhead. Since the building block modules 108 are pulled from the encrypted code/libraries, they are not typically visible in memory.
The building block modules 108 also have layered APIs (e.g., a specific API to communicate amongst each other). The APIs enable additional flexibility and extendability as well as providing a firewall (or micro-firewall) between every service to ensure transactions are coming from the right place (e.g., no man in the middle), the correct data is involved, and so on. The communications between the building block modules 108 are also able to be over HTTP. For example, a Web Application Firewall (WAF) is utilized, which applies specific rules for HTTP application communications.
The building block modules 108 are able to include executables (.exe), dynamic link libraries (.dll), configuration information, or other types of data/files (e.g., .so). The building block modules 108 are able to run in the background as background processes. The building block modules 108 are able to communicate through encrypted communications. The encrypted communications go through a transport such as Internet Protocol (IP), encrypted pipes in memory, Bluetooth® or another implementation. As described herein, the services are wrapped in APIs. The APIs implement REST (e.g., a very thin web server/client).
The application solutions/modules 110 are able to be developed using the building block modules 108. Exemplary applications include: encrypted email attachments, CyberEye multi-factor authentication, ID proofing, secure document signing (e.g., Docusign), secure electronic transactions, smart machines (e.g., autonomous vehicles), SAAS login, OpenVPN, blockchain login, blockchain support, high performance transaction services, electronic locks and E-notary. For example, since Docusign is relatively unsecure (e.g., anyone can sign the document), by combining Docusign with a CyberEye multi-factor authentication or another identification technology, it is possible to increase the security such that only the intended person is able to sign the document. More specifically, data at rest encryption is utilized to ensure the document is secure while stored, and the multi-factor authentication is used to ensure that the person signing the document is the desired target, and data in motion encryption is used to ensure the signed document is not tampered with and is received at the correct location.
The application solutions/modules 110 are able to be run/executed on any computing device such as a smart phone, a personal computer, a laptop, a tablet computer, a server, a dedicated smart device, a computer workstation, a server, a mainframe computer, a handheld computer, a personal digital assistant, a cellular/mobile telephone, a smart appliance, a gaming console, a digital camera, a digital camcorder, a camera phone, a portable music player, a mobile device, a video player, a video disc writer/player (e.g., DVD writer/player, high definition disc writer/player, ultra high definition disc writer/player), a television, a home entertainment system, an augmented reality device, a virtual reality device, smart jewelry (e.g., smart watch), a vehicle (e.g., a self-driving vehicle), IoT devices or any other suitable computing device.
The access-hardened API/SDK 112 includes similar security (e.g., encryption) as in the other modules. The access-hardened API/SDK 112 is able to utilize REST or another API (e.g., RPC). By implementing the access-hardened API/SDK 112, communication with the outside world is facilitated. For example, using a scripting language (e.g., javascript), an external application is able to communicate with the system.
The security orchestration server 114 is/includes a scripting language where when a call is received, the process goes down through the stacks starting at the top until the software library/code is reached (e.g., 114 through 102), and then the process goes up through the stacks out through the top (e.g., 102 through 114). Although the language is exposed to the outside world, it is based on the hardened code 102, so it is still secure.
The security orchestration server 114 accesses the security-hardened code 102 in the secure vault. The security orchestration server 114 includes keys and other information used for accessing the security-hardened code 102. The security orchestration server 114 deploys the services, builds keys, assigns commands/tasks and performs other control features. In some embodiments, the security orchestration server 114 organizes the building block modules 108 such that they are able to communicate with each other and function as an application 110.
When the security orchestration server 114 launches an application 110 (comprised of the building block modules 108), the security orchestration server 114 retrieves .dlls or other data and executes/communicates with the application 110 through the APIs of the building block modules 108.
The security orchestration server 114 controls deployment, policies and app structure. The app structure is also referred to as the application solutions/modules 110 which includes the code, the different modules/objects, and any data involved. The policies are able to be any policies such as for the firewall—what ports are open, which APIs are able to run in/with the application, who/what/when/where, well-structure calls (size of packets, and more), ports/ACL, and partners (which partners have access).
The secure orchestration server 114 implements a secure language such as python with extensions, java, and/or javascript.
In an example, a copy program is implemented by sending a copy command via the API which triggers a copy module which uses the transport scheme including data at rest encryption and data in motion encryption, and then goes to the transport layer and performs encryption/decryption, handles key exchanges and the copying using the code modules for copying.
In some embodiments, the security platform architecture application(s) 630 include several applications and/or modules. In some embodiments, modules include one or more sub-modules as well. In some embodiments, fewer or additional modules are able to be included.
In some embodiments, the security platform architecture hardware 620 includes camera components such as a lens, an image sensor, and/or any other camera components.
Examples of suitable computing devices include a personal computer, a laptop computer, a computer workstation, a server, a mainframe computer, a handheld computer, a personal digital assistant, a cellular/mobile telephone, a smart appliance, a gaming console, a digital camera, a digital camcorder, a camera phone, a smart phone, a portable music player, a tablet computer, a mobile device, a video player, a video disc writer/player (e.g., DVD writer/player, high definition disc writer/player, ultra high definition disc writer/player), a television, a home entertainment system, an augmented reality device, a virtual reality device, smart jewelry (e.g., smart watch), a vehicle (e.g., a self-driving vehicle), IoT devices or any other suitable computing device.
In some embodiments, the final key is protected by optical encryption. As described herein, a user uses a camera device such as a camera on a mobile phone or tablet to scan/acquire a dynamic optical mark (e.g., CyberEye mark). The CyberEye result is wrapped around the final key. In some embodiments, the final key (with white noise) is encrypted/wrapped using the CyberEye encryption (or other opti-crypto wireless airgap encryption) information. In some embodiments, the opti-crypto key wrapper is a key encapsulation algorithm. In some embodiments, the optical encryption is used to generate the key. For example, the CyberEye result is a key or the final key which is combined with white noise.
Once the keys are passed, an encrypted communication/channel is able to be established (e.g., AES). In some embodiments, the encryption used is polymorphic, meaning the keys for the packets continuously change. In some embodiments, the encryption utilized with the encrypted communication/channel is post quantum encryption which enables quantum resistant encryption.
In some embodiments, a user's computing device is able to be used as a secure identification (e.g., ID proofing). The computing device is able to have a TPM or similar device/implementation for securing certificates. The TPM or similar implementation has break-in detection and other security measures. The computing device also includes machine learning implementations (processors/microchips). The computing device is able to include other standard components such as a CPU, one or more cameras, a screen, communication modules (e.g., Bluetooth,® WiFi, 5G, xG), and others.
ID proofing is able to prove/guarantee a user is who they claim to be. Instead of or in addition to biometric identification (e.g., fingerprint matching) and facial/voice recognition, other aspects of a user or a user's actions are able to be analyzed (e.g., behavior analysis). For example, a user's gate/stride, how the user uses his device, how the user types/swipes, and other motions/actions/transactions are able to be analyzed, compared and matched to determine if the user is the expected/appropriate user. Furthering the example, if a user typically takes short strides while using the phone and uses two thumbs to input text, then when a second user attempts to use the phone but has longer strides and uses a single finger input, then the device is able to detect that the person using the device is not the expected user (e.g., owner of the mobile phone).
A trust score is able to be generated based on the analysis. For example, as more matches are made (e.g., valid biometric input, matching stride, and matching typing performance, the trust score increases). Policies are able to implemented based on the trust score. For example, one or more thresholds are able to be utilized such that if the trust score is below a threshold, then options are limited for that user. Furthering the example, if a user has a 100% trust score, then there are no limitations on the user's use of the device, but if the user has a 50% trust score, below a money threshold, then the user is not able to perform any transactions involving money with the device, and if the user has a 5% trust score, the user is not able to access any applications of the device. Any number of thresholds are able to be used, and any limitations/consequences are able to be implemented based on the thresholds/trust score. The orchestrator described herein is able to implement these policies. In some embodiments, a risk score is implemented which is similar but inverse of the trust score.
In some embodiments, a transaction proxy is implemented. The transaction proxy is able to utilize the trust score to determine which transactions are allowed. The transactions are able to include any transactions such as logging in to a web site/social media, accessing an application (local/online), purchasing goods/services, transferring money, opening a door, starting a car, signing a document or any other transaction. In some embodiments, if a user's trust score is currently below a threshold, the device is able to perform additional tests of the user to increase their trust score (e.g., ask the user to say a word to determine a voice match). Passwords and personal information are able to be stored locally on the device (or on the Internet/cloud) for retrieval for access/comparison purposes. As described herein, the data (e.g., passwords and personal information) are able to be encrypted and backed up. For example, if the device is lost, the backup enables a user to purchase another device and retrieve all of the passwords/personal information.
In some embodiments, the implementation is or includes an extensible transaction method. For example, the device includes an application with a list of transactions (e.g., plug-ins). Once a transaction is initiated (e.g., Facebook login where Facebook password is pulled from the TPM), the transaction with all of the required information is stored as an encrypted file which is sent to a secure server proxy which is able to decrypt the file and then make the transaction. Since the transaction is able to occur using a proxy, the user is able to remain anonymous. In some embodiments, the opti-encryption implementation is able to be utilized with the secure identification implementation.
In the step 902, a trust score is generated. The trust score is generated by analyzing the acquired user information. For example, an application records (and learns) how a user types, and compares how the current input with previous input to determine similarities. Similarly, the application is able to analyze a user's stride (long, short, fast, slow) by capturing the data over periods of time for comparison purposes. The trust score is also able to be based on other information such as location, time, device information and other personal information. For example, if the device is determined to be in Mexico, and the user has never visited Mexico previously, the trust score is able to be decreased. Or if the device is being used at 3 a, when the user does not use the device after 10 p or before 6 a, then the trust score is decreased.
In the step 904, usability of the device is limited based on the trust score. For example, if the trust score is below a minimum threshold, the user may be prevented from doing anything on the device. In another example, if the user's trust score is determined to be below an upper threshold, the user may be permitted to utilize apps such as gaming apps, but is not able to use the device to make purchases, sign documents or login to social media accounts. In some embodiments, actions/transactions are classified into classes or levels, and the classes/levels correspond to ranges of trust scores or being above or below specified thresholds. For example, purchases of $10 or more and signing documents are in Class 1, and Class 1 actions are only available when a trust score is 99% or above, and purchases below $10 and social media logins are in Class 2, and Class 2 actions are available when a trust score is 80% or above.
In some embodiments, fewer or additional steps are implemented. For example, if a user's trust score is below a threshold for an action that the user wants to take, the device is able to request additional proof by the user (e.g., provide a fingerprint and/or input a secret code) to increase the user's trust score. In some embodiments, the order of the steps is modified.
In some embodiments, the embedded electronic device 1200 illuminates/flashes the lights 1204 in a specific pattern which a user device 1210 (e.g., smart phone) is able to scan/capture (similar to the CyberEye implementation). For example, upon the user device 1210 scanning the pattern provided by the embedded electronic device 1200, the user device 1210 (or the embedded electronic device 1200) sends an encrypted communication to perform a transaction. In some embodiments, a server 1220 determines (based on stored policies as described herein) whether the user's trust score is above a threshold to perform the transaction. For example, the user device 1210 is able to be used to unlock a house door, open a car door or purchase items at a vending machine. Furthering the example, in an encrypted communication to the server 1220 based on the scan of the embedded electronic device 1200, a transaction request to open the front door is sent to the server 1220 (either by the embedded electronic device 1200 or the user device 1210). The server 1220 compares the trust score with policies (e.g., if trust score is 99% or above, then unlock the lock; otherwise, no operation), and performs or rejects the requested transaction. For example, the server 1220 sends a communication to the embedded electronic device 1200 to unlock the lock of the door. The communication is able to be sent to a local or remote server for authentication which then communicates to the specific device (e.g., house door lock), or the communication is sent directly to the specific device (e.g., peer-to-peer communication). In some embodiments, the embedded electronic device 1200 sends the communication to a local or remote server for authentication, and then upon receiving authentication, the embedded electronic device 1200 performs the transaction. In some embodiments, the embedded electronic device 1200 communicates with the server (e.g., communicates the transaction request), and the user device 1210 communicates with the server (e.g., the user ID/trust score), and the server uses the information received from both devices to perform an action or to send a communication to perform an action, as described herein.
Since the embedded electronic device 1200 includes a camera 1202 and LEDs 1204, and a user device 1210 (e.g., mobile phone) includes a camera and a display to display a CyberEye (or similar) implementation, each is able to be used to display and acquire a unique code.
The multiple devices are able to communicate with each other and/or with a server. For example, a first user device is able to communicate with a second user device, and the second user device communicates with a server, and then provides the data received from the server to the first user device. Therefore, in some embodiments, the first user device (or embedded electronic device) does not need a connection with the server.
In some embodiments, the user device is able to replace a car key fob, since the user device is able to perform ID proofing as described herein, and is able to communicate with an embedded electronic device (e.g., a vehicle door lock/other vehicle controls). Similarly, with minimal modification, a car key fob is able to implement the technology described herein.
In some embodiments, instead of using optics for encryption (e.g., scanning a CyberEye implementation), other schemes are used such as infra-red, Bluetooth®, RFID, sonic, ultrasonics, laser, or RF/WiFi.
In some embodiments, the user device 1400 includes a transaction application 1410 programmed in memory. The transaction application 1410 is configured to send an encrypted package 1412 to the server 1404 based on the scan of the CyberEye or similar implementation (e.g., dynamic optical mark/code). The transaction application 1410 is able to trigger actions such as log in to a social media site, log in to a bank account, perform a monetary transfer, and/or any other transaction.
The server 1404 implements a proxy to perform the electronic transactions such as authentication, unlock door, moving money, e-signature and/or any other transaction. The transactions available through the transaction application 1410 are also added to the server 1404, such that the number of transactions is extensible. As described herein, the transactions are able to be accompanied by a trust or risk score such that if the trust/risk score is above or below a threshold (depending on how implemented), then the transaction request may be denied. By using the proxy to perform the electronic transactions, a user's anonymity and security is able to be maintained. With a transaction directly from a user device 1400, there is still potential for eavesdropping. However, as mentioned above, the transaction application 1410 sends an encrypted package/packet (e.g., token), which includes the transaction information (e.g., transaction ID, phone ID, trust score, specific transaction details such as how much money to transfer) to the server, where the proxy performs the transaction. The proxy server has secure connections to banks, Paypal, social networking sites, and other cloud servers/services. Furthermore, in some embodiments, the proxy server communication does not specify details about the user. In some embodiments, after the proxy server performs the transaction, information is sent to the user device. In some embodiments, the information sent to the user device is encrypted. For example, after the proxy server logs in to Facebook, the Facebook user page is opened on the user device.
In an example, a user receives a document to sign on the second device 1402. The user clicks the document icon to open the document, which then causes a CyberEye mark to appear. The user then scans the CyberEye mark with the user device 1400 which performs the ID proofing/authentication as described herein. The document is then opened, and it is known that the person who opened the document is the correct person. Similarly, the document is able to be signed using the CyberEye mark or a similar implementation to ensure the person signing the document is the correct person.
As described herein, a user device (e.g., mobile phone) is able to be used for ID proofing, where the user device recognizes a user based on various actions/input/behavioral/usage patterns (e.g., voice/facial recognition, stride/gate, location, typing technique, and so on). In some embodiments, potential user changes are detected. For example, if a user logs in, but then puts the device down, another user may pick up the phone, and is not the original user. Therefore, actions/situations such as putting the phone down, handing the phone to someone else, leaving the phone somewhere are able to be detected. Detecting the actions/situations is able to be implemented in any manner such as using an accelerometer to determine that the phone is no longer moving which would indicate that it was put down. Similarly, sensors on the phone are able to determine that multiple hands are holding the phone which would indicate that the phone is being handed to someone else. In some embodiments, the user device is configured to determine if a user is under duress, and if the user is under duress, the trust score is able to be affected. For example, an accelerometer of the user device is able to be used to determine shaking/trembling, and a microphone of the device (in conjunction with a voice analysis application) is able to determine if the user's voice is different (e.g., shaky/trembling). In another example, the camera of the user device is able to detect additional people near the user and/or user device, and if the people are unrecognized or recognized as criminals (e.g., face analysis with cross-comparison of a criminal database), then the trust score drops significantly (e.g., to zero).
As discussed herein, when a user attempts to perform an action/transaction where the user's trust score is below a threshold, the user is able to be challenged which will raise the user's trust score. The challenge is able to be a behavioral challenge such as walking 10 feet so the user device is able to analyze the user's gate; typing a sentence to analyze the user's typing technique; or talking for 10 seconds or repeating a specific phrase. In some embodiments, the user device includes proximity detection, fingerprint analysis, and/or any other analysis.
In some embodiments, an intuition engine is developed and implemented. The intuition engine continuously monitors a user's behavior and analyzes aspects of the user as described herein. The intuition engine uses the learning to be able to identify the user and generate a trust score.
With 5G and future generation cellular networks, user devices and other devices are able to be connected and accessible at all times, to acquire and receive significant amounts of information. For example, user device locations, actions, purchases, autonomous vehicle movements, health information, and any other information are able to be tracked, analyzed and used for machine learning to generate a behavioral fingerprint/pattern for a user.
In some embodiments, when a user utilizes multiple user devices, the user devices are linked together such that the data collected is all organized for the user. For example, if a has a smart phone, a smart watch (including health monitor), and an autonomous vehicle, the data collected from each is able to be stored under the user's name, so that the user's heart beat and driving routes and stride are able to be used to develop a trust score for when the user uses any of these devices.
To utilize the security platform architecture, a device executes an application which is composed of building block modules which transport data securely using a secure network transport, where the building block modules are composed of software code which is securely stored and accessed on the device. In some embodiments, the application is accessed as part of a web service such that a security orchestration server or access-hardened API are used to access the application. The security platform architecture is able to be implemented with user assistance or automatically without user involvement.
In operation, the security platform architecture provides an extremely secure system capable of providing virtually tamper-proof applications.
The security platform architecture implements/enables: a unique Opti-crypto wireless airgap transport, a personal smart device—intelligent ID proofing, secure extensible electronic transaction framework, blockchain integration and functionality, anonymous authentication and transaction technology, post quantum encryption at rest and in motion, secure private key exchange technology, secure encryption tunneled in TLS, high-throughput, low-latency transport performance, low overhead transport for low power FOG computing applications such as IOT, RFID, and others.
The security platform architecture is able to be utilized with:
Consumer applications such as games, communications, personal applications;
Public Cloud Infrastructure such as SAAS front-end security, VM-VM, container-container security intercommunications;
Private Cloud/Data Centers such as enhanced firewall, router, edge security systems;
Telco Infrastructures such as CPE security, SDN encrypted tunnels, MEC edge security and transports, secure encrypted network slicing; and
5G New Market Smart Technologies such as smart machine security (sobots, autonomous vehicles, medical equipment).
The security platform includes infrastructure building blocks:
Client devices:
smart personal devices, IoT devices, RFID sensors, embedded hardware, smart machines; Client functions:
ID proofing (trust analysis), CyberEye wireless transport, extensible electronic transaction clients, content and data loss security management, authorization client;
Transport functions:
Post-quantum data encryption technology, data-in-motion transport, data-at rest encryption, quantum tunnel through SSL/TLS, private-private secure key exchange, high-performance, low latency, low compute transport, TPM key management, SSL inspection;
Central server functions:
AAA services, federation gateway, electronic transactions server, adaptive authentication services, ID proofing services, user registration services, CyberEye transport server.
The security platform architecture is able to be used in business: 5G encrypted network slicing, electronic stock trading, vending machine purchasing interface, vehicle lock and security interfaces, anonymous access applications, Fog computing security transport (IoT to IoT device communications), SSL inspection security (decryption zones), generic web site/web services login services, MEC (mobile/multi-access edge gateway transport and security), cloud network backbone security firewalls (rack to rack FW), Office 365 secure login, low power IoT sensors, password management with single sign-on, high-security infrastructures requiring out-of-band or air gap enhanced access, or VM-to-VM (or containers) secure communications transport.
In some embodiments, device hand off identification proofing using behavioral analytics is implemented. For example, a device (e.g., mobile phone) detects when the device leaves a user's possession (e.g., put down on table, handed to another person). Based on the detection, when the device is accessed again, determination/confirmation that the user is the correct user is performed. In some embodiments, even if the device has not been placed in a locked mode (e.g., by a timeout or by the user), the device automatically enters a locked mode upon detecting leaving the user's possession.
Detecting the device has been set down is able to be performed using a sensor to detect that the device is stationary, using a proximity sensor, or any other mechanism. For example, one or more accelerometers in the device are able to detect that the device is in a horizontal position and is not moving (e.g., for a period of time above a threshold), so it is determined to have been set down. Determining the device has been set down is able to be learned using artificial intelligence and neural network training. For example, if a user typically props up his device when he sets it down, the general angle at which the device sits is able to be calculated/determined and recorded and then used for comparison purposes. In another example, the device includes one or more proximity sensors which determine the proximity of the device to another object. For example, if the proximity sensors detect that the object is immediately proximate to a flat surface, then the device has been determined to have been set down. In some embodiments, multiple sets of sensors work together to determine that the device has been set down. For example, the accelerometers are used to determine that the device is lying horizontally, the proximity sensors are used to determine that the device is proximate to an object, and one or more motion sensors detect that the device has not moved for 3 seconds. The cameras and/or screen of the device are able to be used as proximity sensors to determine an orientation and/or proximity of the device to other objects. The microphone of the device is able to be used as well (e.g., to determine the distance of the user's voice and the changes of the distances, in addition to possibly the distance and/or changes of distance of another person's voice). For example, if the user's voice is determined to be from a distance above a threshold (e.g., based on acoustic analysis), then it is able to be determined that the user has set the device down.
The process of setting a device down is able to be broken up and analyzed separately. For example, some users may place a device down in a certain way, while other users may make certain motions before putting the device down. Furthering the example, the steps of setting the phone down are able to include: retrieving the device, holding the device, moving the device toward an object, placing the device on the object, and others. Each of these steps are able to be performed differently, so breaking down the process of setting down the device in many steps may be helpful in performing the analysis/learning/recognition of the process. In some embodiments, the steps are, or the process as a whole is, able to be classified for computer learning. For example, one class of setting the phone down is labeled “toss,” where users throw/toss their device down which is different from “gentle” where users gently/slowly place their device down. The “toss” versus “gentle” classifications are able to be determined as described herein such as based on the accelerometer and/or gyroscope information. In another example, some users hold the device vertically before placing it down, while others hold it horizontally, or with one hand versus two hands. The classifications are able to be used for analysis/comparison/matching purposes. Any data is able to be used to determine the device being set down (e.g., movement, proximity, sound, scanning/video, shaking, touch, pressure, orientation and others) using any of the device components such as the camera, screen, microphone, accelerometers, gyroscopes, sensors and others.
Detecting the device has been handed off is able to be performed in any manner. For example, sensors on/in the device are able to detect multiple points of contact (e.g., 4 points of contact indicating two points from one user's hand and two points from a second user's hand, or a number of points above a threshold). In another example, the accelerometers and/or other sensors (e.g., proximity sensors) are able to analyze and recognize a handoff motion (e.g., the device moving from a first position and moving/swinging outward to a second position, or side-to-side proximity detection). In some embodiments, a jarring motion is also able to be detected (e.g., the grab by one person of the device from another person). The handoff motion/pattern is able to be learned using artificial intelligence and neural network training. In some embodiments, motions/movements from many different users are collected and analyzed to determine what movements are included in a handoff. Furthermore, each user's movements are able to be analyzed separately to determine a specific handoff for that user. For example, User A may hand off a device to another user in an upright position after moving the device from his pocket to an outreached position, while User B hands off a device in a horizontal position after moving the device in an upward motion from the user's belt.
Each separate aspect of the movement is able to be recorded and analyzed as described herein to compile motion information for further pattern matching and analysis. For example, the hand off motion is able to be broken down into separate steps such as retrieval of the device by a first person, holding of the device, movement of the device, release of the device, and acquisition of the device by the second person. Each of the separate steps are able to be recorded and/or analyzed separately. Each of the separate steps are, or the process as a whole is, able to be classified/grouped which may be utilized with computer learning and/or matching. Any data is able to be used to determine a handoff (e.g., movement, proximity, sound, scanning/video, shaking, touch, pressure, orientation and others) using any of the device components such as the camera, screen, microphone, accelerometers, gyroscopes, sensors and others.
Similarly, other changes of a user's possession are able to be detected such as the device being dropped. For example, the accelerometers are able to detect rapid movement followed by a sudden stop or slight reversal of movement. Similar to the hand off and set down, dropping and other changes of possession are able to be analyzed and learned.
In the step 1502, a trust score drops/lowers (e.g., to 0) after detection of a loss of possession. As described herein, the trust score of the user determines how confident the device is that the person using the device is the owner of the device (e.g., is the user actually User A). In some embodiments, factors are analyzed to determine the amount the trust score drops. For example, if the device is set down for a limited amount of time (e.g., less than 1 second), then the trust score is halved (or another amount of reduction). If the device is set down for a longer amount of time (e.g., above a threshold), then the trust score drops by a larger amount (or to 0). In another example, if the device is handed off, the trust score drops (e.g., to 0). In some embodiments, in addition to the trust score dropping, the device enters a locked/sleep mode.
In some embodiments, a device has different trust scores for multiple users. For example, if a family uses the same mobile phone—Mom, Dad, Son and Daughter each have different recognizable behaviors (e.g., motion/typing style) to determine who is currently using the phone. Each user has an associated trust score as well. For example, a device may have a trust score of 0 after being set down, but then after the device is picked up, it is determined that Mom is using the device, so her trust score is elevated (e.g., 100), but after a handoff, the trust score goes to 0, until it is determined that Dad is using the device, and his trust score is elevated (e.g., 100). In some embodiments, certain users have certain capabilities/access/rights on a device. For example, if the device detects Mom or Dad, then purchases are allowed using the device, but if Son or Daughter are detected, the purchasing feature is disabled.
In the step 1504, a challenge is implemented to verify/re-authorize the user. The challenge is able to include biometrics, a password request, a question challenge, favorite image selection, facial recognition, 3D facial recognition and/or voice recognition. In some embodiments, the device performs behavioral analytics as described herein to determine if the user is the owner/designated user of the device. For example, analysis is performed on the user's movements of the device, touch/typing techniques, gait, and any other behaviors. Based on the behavioral analytics, the trust score may rise. For example, if the behavioral analytics match the user's behaviors, then the trust score will go up, but if they do not match, it is determined that the device is being used by someone other than the user, and the trust score stays low or goes down. In some embodiments, the challenge enables initial access to the device, but the user's trust score starts low initially (e.g., 50 out of 100), and then based on behavioral analytics, the trust score rises.
In some embodiments, fewer or additional steps are implemented. In some embodiments, the order of the steps is modified.
In some embodiments, an automated transparent login without saved credentials or passwords is implemented. In the past, a device's browser could save a user's login and password information. However, this is a very vulnerable implementation, and once a hacker or other malicious person acquires the user's login and password information, the hacker is able to perform tasks with the user's account just as the user could, and potentially steal from an online bank account or make purchases on an online shopping site. Using a trust score and behavioral analytics, logging in to websites and other portals is able to be implemented automatically.
In some embodiments, in addition to a trust score, a confidence score is determined for the user/device. In some embodiments, the confidence score for a user is based on the trust score and a risk score. In some embodiments, the risk score is based on environmental factors, and the trust score is based on behavioral factors. In some embodiments, the confidence score goes up when the trust score goes up, and the confidence score goes down when the risk score goes up. Any equation for the confidence score is possible, but in general as the trust increases, the confidence increases, but as the risk increases the confidence decreases.
In the step 1602, a multi-factor authentication (MFA) application is executed. The MFA application is able to be running in the foreground or the background. The MFA application is able to be implemented in a secure, isolated space as described herein to prevent it from being compromised/hacked. In some embodiments, the MFA application includes aspects (e.g., operations) to acquire information to determine the trust, risk and confidence scores. For example, the trust score and risk scores each have multiple factors which go into determining their respective scores which are used to determine the confidence score which is further used for authenticating a user.
In some embodiments, the MFA application utilizes the confidence score analysis and additional user verification implementations. For example, CyberEye (also referred to as CypherEye) application/technology is able to be executed with the device. In some embodiments, the MFA application and/or CypherEye application is used as a login authority. The MFA login or CypherEye login looks like a local login, but instead a hash (or other information) is sent to a backend mechanism. In some embodiments, the MFA application uses the CypherEye information in conjunction with the confidence score. In some embodiments, a challenge is implemented (e.g., a request for the user to perform a CypherEye operation) for additional verification/qualification. For example, if a user's confidence score is below a threshold, then the user is challenged with a CypherEye request to acquire a CypherEye mark with his device. In another example, a user is able to log in using the MFA application which gives the user access to basic phone functions (e.g., using Facebook), but to access banking/trading applications or web sites, the user is presented a challenge (e.g., security question, password, CypherEye acquisition using camera) for further verification.
In some embodiments, the challenge is only presented if the confidence score is not above a threshold. For example, if the user has a confidence score of 99 out of 100 on the device, then the user is not requested to perform additional authentication measures to gain access to web sites or applications. However, if the user has a confidence score of 50 out of 100, then additional authentication measures are utilized before access is given to certain web sites or applications. For example, although the user logged in using the MFA application, the device or system determined that the same user logged in (or attempted to) using a different device 500 miles away. The risk score is elevated since one of the log in attempts was likely not from a valid user, so the confidence score was lowered. A challenge may be presented in this situation.
In some embodiments, the MFA application is used in conjunction with a login/password. For example, a browser presents a web page for a user to input login information and a corresponding password as well as MFA information (e.g., a scanned CypherEye code/mark).
In some embodiments, the MFA application is a plugin for the browser.
In the step 1604, the MFA application (or plugin) contacts a server and/or backend device (e.g., Visa or PayPal) based on the MFA information (e.g., behavioral information or other acquired information). For example, the MFA application sends the confidence score as determined In another example, the MFA application sends the acquired information to the server for the server to determine the confidence score. In some embodiments, the confidence score is utilized by the server such that if the confidence score is above a threshold, the server contacts the backend device with the user login information. Furthering the example, the server stores user login/password information to the backend device, and once the user is verified by the server based on the MFA information, then the server communicates the login/password information with the backend device to gain access for the user device. The MFA application and/or the server are able to implement a proxy authentication or other implementation to gain access to the backend device. In some embodiments, the MFA application acts as a proxy server, if the confidence score of the user is above a threshold (e.g., 90 out of 100).
In the step 1606, login authorization is provided by a backend device (e.g., allow the user to access a web page populated with the user's specific information (e.g., bank account information)). For example, the server (or proxy server) provides a login request with the appropriate credentials, and the backend device accepts the request and allows access to the service, or rejects the request and denies access to the service. In some embodiments, the server sends a hash or other code which identifies the user and indicates the user has been validated/authorized by the server to the backend device, and in some embodiments, the server sends identification information and verification information to the backend device, and the backend device performs the verification/authentication. In some embodiments, fewer or additional steps are implemented. In some embodiments, the order of the steps is modified.
In some embodiments, MFA includes behavioral analytics, where the device continuously analyzes the user's behavior as described herein to determine a trust score for the user. The device (or system) determines a risk score for the user based on environmental factors such as where the device currently is, previous logins/locations, and more, and the risk score affects the user's confidence score. In some embodiments, the scan of a dynamic optical mark is only implemented if the user's trust score (or confidence score) is below a threshold. For example, if a user has been continuously using his device as he normally does, his gait matches the stored information, and his resulting trust score is 100 (out of 100) and there have been no anomalies with the user's device (e.g., the risk score is 0 out of 100), then there may be no need for further authentication/verification of the user.
In some embodiments, the authentication implementation utilizes additional MFA information. For example, for additional MFA information, the user utilizes the device's camera to scan a dynamic optical code/mark which is displayed on a secondary device 1702. In another example, a challenge requests the user to input a login and password for a site (e.g., a bank site).
After a user attempts to log in (e.g., clicks a link/button to log into a banking web page), the device 1700 sends a communication (e.g., an access/login request) via a quantum resistant encryption transport 1704 (or another transport) to a server device 1706. The server device 1706 then communicates the request/authentication information to a backend device 1708 (e.g., company device) which provides access to the desired services/information (e.g., log in to a web page with bank account information). Depending on the implementation, different information may be sent from the device 1700 to the server device 1706, and from the server device 1706 to the backend device 1708. For example, the device 1700 may send the acquired MFA information and/or a confidence score to the server device 1706. In another example, the server device 1706 may send a hash for access for a specific user login. The server device 1706 may send the login information and an associated request possibly accompanied by the confidence score. The server device 1706 may send any other data to trigger an access request for a specific user, including or not, an indication that the user should gain access to the backend service/device. The server device 1706 and the backend device 1708 are able to communicate in any manner, using any standard, and via any APIs.
The backend device 1708 is able to utilize standard login/access protocols such as OATH2, SAML, Kerberos and others. The backend device 1708 provides the login authorization (or not) back to the server device 1706 depending on the authentication information. The server device 1706 provides the authorization acceptance to the device 1700 enabling access to the web page. In some embodiments, the server device 1706 acts as a proxy server as described herein. In some embodiments, the server device 1706 performs the authentication verification and does not send the request to the backend device 1708 unless the authentication verification is determined to be true (e.g., user is verified as authentic). In some embodiments, the backend device 1708 communicates the authorization directly with the device 1700. In some embodiments, the implementation described herein is a single sign-on mechanism. By utilizing MFA as described herein, a user will no longer need to store login and password information in his browser.
In some embodiments, automated identification proofing using a random multitude of real-time behavioral biometric samplings is implemented. Single behavioral analysis is susceptible to hacking or spoofing with pre-recorded or eavesdropped data. For example, human speech may be recorded surreptitiously; or human motions (e.g., gait) may be recorded from a compromised personal device or hacked if stored on a central source. Using multiple behavioral biometric mechanisms, sampled randomly, is much more difficult to spoof. The larger number of biometric sensors and analytics employed greatly increases the security for authentication against either human hacking or robotic threats.
As described herein, Multi-Factor Authentication (MFA) is able to be based on possession factors, inheritance factors, and knowledge factors.
In the step 1802, a random multitude of MFA information is analyzed. The MFA information is able to be based on: possession factors, inheritance factors, and knowledge factors. Possession factors are based on what the user possesses (e.g., key card, key FOB, credit/debit card, RFID, and personal smart devices such as smart phones, smart watches, smart jewelry, and other wearable devices). The personal smart devices are able to be used to perform additional tasks such as scanning/acquiring a dynamic optical mark/code using a camera. Inheritance factors are based on who the user is (e.g., biometrics such as fingerprints, hand scans, vein patterns, iris scans, facial scans, 3D facial scans, heart rhythm, and ear identification, and behavioral information such as voice tenor and patterns, gait, typing style, web page selection/usage). Knowledge factors are based on what a user knows (e.g., passwords, relatives' names, favorite image, previous addresses and so on).
Analysis of the MFA criteria is as described herein. For example, to analyze a user's gait, the user's gait information is stored, and the stored data points are compared with the current user's gait using motion analysis or video analysis. Similarly, a user's typing style is able to be captured initially during setup of the device, and then that typing style is compared with the current user's typing style. The analysis of the MFA criteria is able to occur at any time. For example, while the user is utilizing his device, the device may be analyzing his typing style or another criterion (possibly without the user knowing). Additionally, there are particular instances which trigger when the MFA criteria is analyzed, as described herein. For example, when it is detected that the device has left the user's possession, MFA analysis is performed upon device use resumption.
In some embodiments, the stack includes many criteria, but only some of the criteria are used in the analysis. For example, although 6 criteria are listed in a stack, the user has not provided a fingerprint, so that criterion is not checked when doing the analysis.
The MFA analysis is able to include challenges based on the trust score and/or an access request. Multiple thresholds are able to be implemented. For example, if a user's trust score is below 50%, then to perform any activities using the device, the user must solve a challenge (e.g., input a password, select a previously chosen favorite image, provide/answer another personal information question). Answering/selecting correctly boosts the user's trust score (the boost is able to be a percent increase or to a specific amount). In another example, if the user's trust score is above 50% but below 90%, the user is able to access lower priority applications/sites, but would be required to answer one or more challenges to raise the trust score above 90% to access high priority applications/sites such as a bank web site. In some embodiments, the trust score is part of a confidence score, and if the confidence score is below a threshold, then a challenge may be implemented.
In some embodiments, the analysis includes randomly sampling the MFA criteria. For example, although the MFA criteria stack may include eight criteria, each criterion is sampled in a random order. Furthering the example, when a user accesses his device, the user may be asked to provide a fingerprint, but then the next time he accesses his device, the user's gait is analyzed, and the next time, the user's typing style is analyzed, and so on. Any randomization is possible. In some embodiments, multiple criteria are analyzed together (e.g., typing style and fingerprints). In some embodiments, all of the criteria in a stack are utilized but are analyzed in a random fashion/order. For example, when a user accesses a device, he is required to input a password/PIN, then while the user is typing, his typing style is analyzed, and while the user is walking his gait is analyzed, but if the user starts typing again, his typing style is analyzed, and every once in a while a retina scan is requested/performed. The analysis of the criteria is able to be performed in any random order. In another example, sometimes when a user attempts to gain access to a device, he is prompted to provide a fingerprint, other times a password or PIN is requested, and sometimes a retinal scan is implemented. By changing the criteria being analyzed, even if a hacker has the user's password, if the hacker does not have the user's fingerprint or retina scan, their attempt to gain access will be thwarted. As described herein, in some embodiments, multiple criteria are utilized in combination at the same time or at different times.
In the step 1804, a user's trust score is adjusted based on the analysis of the MFA information. As described herein, the user's trust score goes up, down or stays the same based on the MFA information analysis. For example, if a current user's gait matches the stored information of the correct user's gait, then the user's trust score goes up (e.g., is increased). If the current user's typing style is different than the stored information of the correct user, then the user's trust score goes down (e.g., is decreased).
The amount that the trust score is adjusted is able to depend on the implementation. In some embodiments, the effect on the user's trust score is able to be absolute or proportional. For example, in some embodiments, if one criterion out of eight criteria is not a match, then the user's trust score drops significantly (e.g., by 50% or to 0). In another example, in some embodiments, if one criterion of eight is missed, then the trust score drops proportionately (e.g., by ⅛th). In another example, the amount of the drop may depend on how close the currently acquired information is when compared to the stored information. For example, using comparative analysis, a user's gait is a 97% match with the stored information, so the trust score may drop slightly or not at all since the match is very close, whereas a match of 50% may cause a significant drop in the trust score (e.g., by 50% or another amount). When utilizing MFA criteria, if a user's current analysis results in a mismatch (e.g., the user has a different gait), then the user's trust score is lowered, even if the other criteria are matches. For example, seven of eight criteria are matches, but one of the criterion is a mismatch. In some embodiments, one mismatch significantly affects the user's trust score, and in some embodiments, the device/system is able to account for the fact that seven of eight criteria were matches, so the drop in the trust score may be minimal or proportionate. For example, one mismatch out of seven reduces the trust score by less than one mismatch out of two. In some embodiments, if there is one mismatch out of many criteria, the user may be prompted as to why there was a mismatch (e.g., an injury could cause the user to change his gait), and/or another criterion may be utilized.
As described herein, the trust score of the user for a device is able to be used as part of a confidence score (e.g., the confidence score is based on the trust score and a risk score). The confidence score is then used to determine whether the device or system has confidence that the user is who he says he is and what applications/sites the user has access to. A mismatch in the analysis criteria affects the confidence score, and based on the confidence score, additional factors/criteria may be analyzed and/or additional challenges may be utilized. In some embodiments, fewer or additional steps are implemented. In some embodiments, the order of the steps is modified.
In some embodiments, user identification proofing is implemented using a combination of user responses to system Turing tests using biometric methods. For example, device and/or system determines if the user is the correct user (e.g., the user is who he says he is) and is the user a human (and not a bot).
In the step 1900, biometric/behavioral analysis is performed. Biometric analysis is able to be implemented as described herein and include analyzing: fingerprints, hand scans, vein patterns, iris scans, facial scans, 3D facial scans, heart rhythm, ear identification and others, and behavioral analysis is able to include analysis of information such as voice tenor and patterns, gait, typing style, web page selection/usage and others. For example, the device utilizes sensors, cameras, and/or other devices/information to scan/acquire/capture biometric and/or behavioral information for/from the user. The biometric/behavioral analysis is able to include comparing acquired information (e.g., fingerprints) with stored information (e.g., previously acquired fingerprints) and determining how close the information is and whether there is a match. Any implementation of comparison/matching is able to be implemented.
In the step 1902, a biometric/behavioral challenge/Turing test is implemented. For example, a user is requested to turn his head a certain direction or look a certain direction. Furthering the example, the user is prompted by the device to look up and then look right, and the camera of the device captures the user's motions and analyzes the user's motions using video processing implementations to determine if the user looked in the correct directions. In another example, voice recognition is able to be implemented including asking a user to repeat a specific, random phrase (e.g., a random set of word combinations such as “kangaroo, hopscotch, automobile”). The vocal fingerprint and the pattern of how a user talks are able to be analyzed. For example, the device/system is able to detect computer synthesized phrases by detecting changes in pitch, odd gaps (or a lack of gaps) between words, and other noticeable distinctions. Other actions are able to be requested and analyzed as well such as requesting the user to skip, jump, walk a certain way, and so on.
In some embodiments, the biometric/behavioral challenge/Turing test is related to the biometric/behavioral analysis (e.g., in the same class/classification). For example, if the biometric/behavioral test involves facial recognition, then then the biometric/behavioral challenge/Turing test is related to facial recognition such as requesting the user to turn his head in one or more specific directions. In some embodiments, the challenge/test is unrelated to the biometric/behavioral analysis (e.g., in a different class/classification). For example, if there is a concern that a user's facial recognition information has been compromised (e.g., detection of the same facial information within a few minutes in two different parts of the world), then the challenge/test is something unrelated to that specific biometric/behavioral analysis. Furthering the example, instead of asking the user to look a specific direction, the user is requested to speak a randomly generated phrase/sequence of words or to perform an action (e.g., jump, specific exercise). Exemplary classes/classifications include a facial/head class, a gait class, a speech/voice class, a typing class, and others.
The device utilizes sensors, cameras, and/or other devices/information to scan/acquire/capture biometric and/or behavioral information for/from the user to perform the challenge/Turing test. For example, the sensors/cameras capture user information and compare the user information with stored user information to determine if there is a match. In some embodiments, computer learning is able to be implemented to perform the analysis. For example, using computer learning, the analysis/matching is able to be implemented on possible iterations that were not specifically captured but are able to be estimated or extrapolated based on the captured information. In some embodiments, the challenge/Turing test is only implemented if the user passes the biometric/behavioral analysis. In some embodiments, the device (e.g., mobile phone) implements the analysis and challenge/test steps, and in some embodiments, one or more of the steps (or part of the steps) are implemented on a server device. For example, the device acquires the biometric and/or behavioral information which is sent to a server device to perform the analysis of the acquired biometric/behavioral information. Similarly, a response by a user to the challenge/Turing test is able to be acquired by a user device, but the acquired information is able to be analyzed on the server device.
In some embodiments, fewer or additional steps are implemented. For example, after a user is verified using the analysis and challenge/Turing test, the user is able to access the device and/or specific apps/sites using the device. In another example, after a user is verified using the analysis and challenge/Turing test, the trust score, and in conjunction, the confidence score of the user increases. In some embodiments, the order of the steps is modified.
Within an aggregated trust framework, there are analytics and challenges. The analytics are able to include multi-stage analytics including a weighted decision matrix, decision theory, decision tree analytics and/or others. However, scalability is an important factor when implementing the aggregated trust framework. For example, a tree structure is able to be used, but it involves rebalancing as elements are added to the structure. Thus, the structure to be used should be a scalable structure such as a matrix or a weighted table.
Included in the analytics are several steps/phases/modules. There is the base phase which runs in the background. A pre-transaction phase, an external/environmental phase, a device phase, and a hijack phase are also included. The analytics are able to include fewer or additional phases. The challenges are able to be included in the analytics or grouped separately. Each of the analytics and challenges is able to include sub-steps/sub-phases/sub-modules. For example, the base phase module includes a facial recognition sub-module, a voice recognition sub-module and a gait detection sub-module.
The base phase performs many analytical steps in the background (e.g., always running) such as performing an image/video scan of the user's face/body, analyzing the user's gait, and/or other analysis. For example, a device's camera is able to continuously scan the user, the surroundings, objects the user is holding, other objects near the user and/or anything else. In another example, the microphone of the device is able to continuously listen to a user's voice to perform voice analysis and detect changes in the user's voice (e.g., pattern, volume, pitch). In yet another example, the sensors of the device are able to detect specific movements of the user (e.g., gait), hand movements, grip strength, grip positioning, micro-tremors, swiping patterns, touch/typing/texting patterns, and/or others. The base phase is able to implement the various sub-phases simultaneously and switch the focus amount for them when one or more are applicable or inapplicable. For example, if the user has his smart phone in his pocket, the facial recognition aspect is not going to detect a user's face, so the voice recognition and gait detection aspects are continued to be utilized/analyzed.
An aggregate score (e.g., 0 to 100 or 0% to 100%) is able to be computed based on the base phase analytics. For example, the aggregate score is able to increase as correct/matching analytics are detected. For example, if the user's gait, voice, face and swiping movements match previously analyzed information, then the aggregate score may be 100; whereas, if the person detected is walking differently, has a different voice and face, and swipes differently than the previously analyzed information, then the aggregate score may be 0. The previously analyzed information is able to dynamically change as the learning of the user by the device continues. For example, the system does not merely ask the user to take a single scan or image of their face and use that for facial recognition. Rather, the system continuously acquires multiple face scans/images, and using artificial intelligence and machine learning, generates a large body of analytical information to be compared with the user's face. By having a large body of analytical information, if the user wears a hat one day or grows out his beard, then the system is still able to recognize the user as the user.
In some embodiments, if the aggregate score of the base is below a threshold (e.g., 60), then the pre-transaction phase analysis is implemented. The pre-transaction analysis is able to include additional analysis/testing to modify the aggregate score. For example, if the aggregate score is 55 which is below the threshold of 60, then the device performs a facial recognition scan, which if a match is detected, then the aggregate score is increased by 10 such that the aggregate score is above the threshold. With the aggregate score above the threshold, a transaction is able to occur. In some embodiments, the pre-transaction phase includes analytics that are different from the base phase analytics.
The external/environmental phase analyzes external or environmental factors such as the device's location and ambient information (e.g., temperature, lighting, barometer/altimeter information). For example, if the user lives in California, but the phone or communication is determined to be located/coming from China, then the aggregate score would be negatively affected (e.g., dropped to 0 or reduced to below a threshold). In another example, the device determines that the user is using the device at midnight with the lights off, and this is atypical behavior based on previous external/environmental analysis, so the aggregate score is negatively affected.
The device phase analyzes the device information to protect against a computer-based attack. For example, the device is behaving oddly or the system has been spoofed and is being implemented/accessed on a different device than was originally analyzed. Similarly, malware is able to infect a user's device and trigger inappropriate transactions. Therefore, the device phase is able to perform system checks such as a virus scan, a malware scan, a hardware/system check, an OS check, and/or any other device check/analysis. The device phase is also able to affect the aggregate score. For example, if a hardware check is performed, and it is determined that the hardware is different from the original hardware when the app first performed a hardware check, then the aggregate score drops to 0.
The hijack phase analyzes possible change of possession of the device. For example, when a user hands the device to another user, or when the user places the device down, then another user may be in possession of the device. Again, the hijack phase is able to affect the aggregate score. For example, if the user hands the device to another user, the aggregate score drops to 0 because the device is no longer being used by the user.
Challenges are able to be implemented to verify the user which will increase the aggregate score. For example, the user is requested to perform one or more tasks, and if the user's performance is verified, then the aggregate score is able to be increased to an amount above the threshold. For example, the user is requested to shake the device up and down four times, and based on the movement, the speed of the movement, any twists or twitches detected, the device is able to verify if the user is the correct user based on previous analysis of the user. Another example of a challenge involves having the user looking in various directions in front of the device's camera, where the system is able to compare the different poses with stored information or information based on the stored information. Similarly, the challenges are able to implement or incorporate Turing tests to prevent computer-based attacks/breaches.
After going through the analysis and/or challenge, if the aggregate score (e.g., a user's trust score) is above a threshold, then a transaction is authorized. As described herein, the transaction is able to be any transaction such as accessing the device, accessing a website, providing a payment/purchasing an item/service, and/or any other transaction. Different transactions are able to have the same or different thresholds. For example, simply going to a webpage may have a lower threshold than accessing a social media account which may have a lower threshold than authorizing a purchase of an item. The size of the amount/purchase (e.g., $5 vs. $50,000) is able to affect the threshold.
The mobile device 2000 includes a trust app configured to perform the analytics and challenges as described herein. The mobile device 2000 is able to include standard hardware or modified hardware (e.g., add-on sensors). The mobile device 2000 is able to be a mobile/smart phone, a smart watch, and/or any other mobile device. Depending on the implementation, results of the analytics and challenges are able to be stored on the mobile device 2000 and/or the one or more dedicated cloud service devices 2004. For example, the mobile device 2000 is able to include an app which performs the analytics and challenges including storing the results of the analytics and challenges, and then provides a transaction authentication (or denial) to the backend transaction servers 2002. In another example, the mobile device 2000 receives analytics queries and challenge requests from the dedicated cloud service devices 2004 and provides the information/results back to the dedicated cloud service devices 2004. The trust app is able to include or communicate with another device, to perform artificial intelligence and/or machine learning capabilities. The ID trust library is an SDK embedded inside the device (trust) app.
The backend transaction servers 2002 define discrete transactions, including a minimum trust score to perform each transaction. For example, the backend transaction servers 2002 communicate with a website server (e.g., social network, bank, online store) to gain access to the website (or other online service). The backend transaction servers 2002 communicate with the mobile device 2000 to receive a trust score (or other authorization signal), and if the trust score is above a threshold, then the transaction is able to be authorized by the backend transaction servers 2002. The transaction servers 2002 interact with an ID trust library, where the transaction servers 2002 provide policies to the ID trust library. In some embodiments, the ID trust library is stored within a device (trust) application. The ID trust library retrieves policies from the transaction server 2002, and then uses the policies and other criteria to generate a trust score. Each server transaction has different requirements for each transaction. As described herein, a task such as opening a bathroom door involves less security and identity confidence than opening a bank vault or entering a military resource. The transaction servers 2002 contain the policies and sends them to the device application. Then, the ID trust library processes a trust report. If the result complies with the given policy, the device app is allowed to perform the specific transaction.
The dedicated cloud service devices 2004 provide resources and services to clients (e.g., mobile devices). The dedicated cloud service devices 2004 include a trust analytics data feed, activity log feeds and phone security conditions. The dedicated cloud service devices 2004 are able to provide updates to the app on the mobile device 2000, communicate with the mobile device 2000 for a cloud-based implementation of the analytics and challenges, and/or for any other purposes.
In an exemplary implementation, a user attempts to perform a financial transaction with his online bank using his mobile device 2000. The online bank system communicates with the transaction servers 2002, where the online bank system waits for an authentication from the transaction servers 2002. The transaction servers 2002 verify that the user is who he says he is based on the mobile device 2000 determining a trust score for the user that is equal to or greater than the minimum trust score (e.g., threshold) for the transaction to be authorized. After the user generates a trust score that is above the threshold via the analytics and/or challenges, an authentication to perform the transaction is sent to the transaction servers 2002 which is able to provide the authentication information to the online banking system to perform the transaction. If the trust score is not above the threshold, then the transaction fails.
In the step 2100, sensor data is received. Depending on the analytics and/or challenges, the sensor data is able to include movement data such as vibration detection by the sensors, and/or shaking movement, gait motion; input data such as swiping motions and/or keyboard/keypad input; voice/audio input; image/video input; and/or any other sensor/input data.
In the step 2102, trust analytics are implemented. The trust analytics software modules each run independently. In some embodiments, the modules are linked by graphical weighted decision tree algorithms, where multiple trust analytics trust scores are aggregated into a single trust score. The trust scores are dynamic and change from second to second, and are computed prior to any transaction. The trust analytics are able to include: traditional “know,” “have,” and “are” questions; dynamic biometrics including behavioral analysis; external behavioral factors such as location analysis; external factors such as environmental parameters; and/or device hardware/software behavioral analysis. Although a weighted decision tree is described herein, any structure (e.g., matrix) is able to be utilized.
In the step 2104, one or more challenges are implemented. Since each transaction performed has a minimum trust score, on the occasion where the current trust score is lower than the minimum, a challenge is used to prove the user to the mobile trust system. The challenges are able to be stored in a challenge stack, where a challenge module is algorithmically selected. Performing a challenge successfully raises the user trust score above the minimum threshold. Although a stack is described herein, any structure is able to be utilized.
In the step 2106, after the analytics and/or challenges, a resultant trust score is generated. The resultant trust score is used to determine if an authorization is provided. The authorization is able to be provided as a token, a certificate or any other authorization implementation. The authorization enables a transaction to occur.
In an exemplary implementation, a user initiates a transaction on a device app containing the ID trust library. The ID trust library connects to a transaction server and receives transaction policies and minimum trust thresholds. The ID trust library runs through the computational algorithms. The ID trust library computes the current ID trust score. If the resultant current trust score is below the threshold values, the ID trust library uses policies to select a challenge module, and the challenge module is executed, potentially raising the trust score. If the final trust score is above the threshold, the transaction is allowed to continue; otherwise, the transaction is not allowed.
In scenario 2300, a user's motion is collected in the background with a gait trust score computed continuously (e.g., 85%). Another analytics module with a higher weighting value can override the resulting trust score. In this scenario, a device pickup or device handoff test reduces the overall score drastically since the current user cannot now be verified. To verify the user identity, a challenge module is initiated (e.g., device shake challenge). Challenge modules are used if immediate user actions are desired, such as unlocking a door or logging into an Internet service.
In scenario 2302, after the gait background analytics, the handoff analytics module detected that the phone was handed to another user. This action drastically reduces the overall trust of the identity of the current user holding the phone.
In scenario 2304, tests are able to be run in parallel. Some types of analytics may operate independently at the same time. The combination of these modules can be combined, and using the priority weight values, an overall trust score can be computed. More complex scenarios using weights and other parameters used for decision branching are described herein.
Exemplary modules are able to be categorized such as: human movements, static image analysis, dynamic image analysis, voice print analysis, user location, external factors, device usage, and/or device internals. Human movements include a shake test, a gait test, micro-tremors, a pickup, and/or a handoff. Static image analysis includes facial recognition, ear shape, face with Turing test (e.g., user instructed to look up), and/or face with user ID (e.g., user face while holding up driver license). Dynamic image analysis includes continuous facial analysis and/or lip movement analysis. Voice print analysis includes continuous voice recognition and/or voice with a Turing test (e.g., the device instructs a user to say random words to thwart malware or recordings of the user's voice). User location includes movement vector analysis (e.g., user is on common routes), common locations (e.g., user is at home or work is more trusted than somewhere the user has never visited) and/or speed analysis (e.g., impossible travel scenarios). External factors include ambient light and/or altitude/temperature/barometric pressure. Device usage includes typing/swiping analysis, app usage analysis, and/or device login/startup. Device internals include device hardware anomalies and/or device software anomalies.
A trust challenge is a mechanism where the mobile trust system challenges the smartphone user to perform some predetermined action. This is used when the trust system cannot adequately determine the identity of the user. An example would be a user using the system to unlock an electronic lock. The user has an option to prove their identity and immediately open the door. When the user's current trust score is inadequate, a trust challenge is initiated. At the successful completion of the challenge, the user's trust score is increased adequately to open the door.
Turing tests in this context are used to guarantee the user identity is a human Malware is an enormous threat today. User identities are commonly compromised by malicious software. Once a user's identity is exposed to malware, the user's identity can be used fraudulently. The trust challenge technologies use any of several biometric factors in combination with an action that can only be performed by a human Examples of challenges with Turing tests include dynamic human interactions. Examples include: reading from the screen random words or pictures and saying them out loud. Generally, only a human can interpret the messages, and the human voice print identifies the specific user. Another example is identifying a video challenge. Another example is dynamic facial recognition of the user performing actions specified by the mobile technologies. Examples might be look right, look up, stick out your tongue, and more.
Exemplary challenge modules are able to be categorized such as: image analysis, human movements, voice prints, personal information, directed actions, and/or static biometrics. Image analysis includes a face with Turing test (e.g., facial recognition combined with instructions from the device), a face with User ID (e.g., user's face and holding up driver license) and/or Facial 3D (e.g., user moves the device around his face). Human movements include a shake test. Voice prints include voice recognition and/or voice with Turing (e.g., user says random words instructed by the Trust framework. Personal information includes things the user knows such as mother's height, SSN, passwords/codes, date of special event, and/or many others. Directed actions include swipes, directed touch (e.g., touch areas or images on the screen), directed typing, drag objects, and/or pinch/spread. Static biometrics include fingerprints and/or image recognition.
Inside the application is a software bus. Inside the software bus is a database, a computation engine, and a policy engine. The computation engine performs the calculations, and the policy engine includes the decision-making information. The computation engine includes a weighted scoring engine which involves a weighted matrix which is able to take a base score and additional scoring information from the multi-stage phases to generate an aggregated score.
The software bus connects to each phase (module) as described herein, and inside each phase (module) are pluggable components for each analytics element. For example, the software bus connects to the base module, the pre-transaction module, the external/environmental module, the device module, the hijack module, and/or the challenge module and/or the pluggable components within the modules. The pluggable components allow analytics elements to be added, removed or modified dynamically. The pluggable components are able to be programmed in an interpretive language.
Analytics that define a user are able to be used as a password for access to online transactions. As described herein, the analytics are able to include a user's physical attributes, gait, tremors/microtremors, face, ear, voice, behavior, vein patterns, heart beat, device usage, and/or others. The analytics generate a matrix of data, and each analytic is able to be broken down into components. For example, gait includes height, speed, walking, acceleration, gyroscope, and it follows a pattern match which is extrapolated into a pattern information structure. In another example, physical attributes are able to include a user's height, weight, skin color, hair color/style, birthmarks, scars, and/or other identifying physical attributes. Vein patterns are also able to be detected (e.g., using a mobile phone's camera to scan a user's face, arm or leg). Tremors or microtremors are able to be detected in a user's hand based on the accelerometer and/or other components in a mobile phone detecting very slight movements. Facial, ear or other body part recognition is able to be implemented using the camera of the mobile phone. Voice recognition is able to use the microphone of the mobile phone. In some embodiments, the voice recognition occurs without the user specifically focused on passing a voice recognition test. For example, the mobile phone “listens” to nearby voices including detecting the user's voice. The mobile phone is also able to “listen” to the user's voice while the user is talking to another person to analyze the voice and determine if the voice is that of the user. Other behavioral analysis is able to be performed as described herein such as analyzing the locations that the user and the mobile phone go to, how long they are there, which web sites are visited, and/or any other behaviors/actions that the user takes that are repeated and recognizable. Using the mobile phone, a microphone or another sensor of the mobile phone is able to detect a user's heartbeat. For example, the mobile phone is able to be placed against a user's body or a sensor is connected from the mobile phone to the user's body, and the mobile phone is able to detect a user's heartbeat including any specific, unique heart rhythm In some embodiments, all of the analytics patterns are aggregated into a pattern matrix. The pattern matrix is a multi-variant matrix which is able to account for changes in one or more of the analytics patterns. For example, if a user has a broken nose, his detected face pattern may be off when compared with the stored face pattern information, so the other analytics or additional analytics are used to compensate to ensure the proper user is able to perform transactions while also ensuring that an improper user is blocked from performing transactions. The stored data is continuously, dynamically changing to account for changes in the user (e.g., a user's voice changing, a user's hair changing, and many others). The stored data is able to use artificial intelligence and machine learning to maintain a knowledge base of a user and many possible attributes. For example, not only is the user's normal gait learned and stored, but if the user has a slightly different gait after exercising, and a very different gait when injured, the various gaits are able to be learned and stored, so that the gait analytics are able to be used regardless of the user's current state.
In the step 2502, the aggregated trust score is utilized to gain access to an online service. For example, a mobile device is used to log in to an online service, and if the aggregated trust score is above a threshold, then the mobile device sends an authentication certificate or other information to access the online service (e.g., social network login). If the aggregated trust score is not above the threshold, then the mobile device does not send the authentication certificate or other information. If the aggregated trust score is not above the threshold, then the user is able to be challenged (e.g., prompted to perform a challenge action). Based on the challenge the user may raise their trust score above the threshold (or not), and if the trust score is above the threshold, the authentication certificate is able to be sent to access the online service. The access is not limited to online services. Any access (e.g., open the front door) is able to be implemented using the aggregated trust system including the user is the password aspects. In some embodiments, fewer or additional steps are implemented. For example, if an aggregated trust score is below a threshold, then one or more challenges are provided to affect the aggregated trust score. In some embodiments, the order of the steps is modified. The authorization is able to be used as a password to access any system. For example, the password is able to be used to access the mobile device, web pages/social networking pages, secure devices, online services, and/or any other device/system/service that utilizes a password to gain access. In another example, a user navigates using a web browser to a web page which requires a password or other authentication to access the web page. Instead of providing a password which is able to be stolen or hacked, the user's mobile device authenticates the user based on the aggregated analytics described herein and provides an authentication certificate or other implementation to indicate to the web page that the user is who he says he is (e.g., the accurate user). As described above, a generated token is able to be used as a password to gain access to a service. For example, the user is able to provide the previously generated token to the service which verifies the user as the user. In another example, the service automatically analyzes the token and verifies the user based on the token. In yet another example, a public-private key exchange is implemented with the token generated from the human characteristic information.
Data is collected about the user, the device and external conditions. Each of the ID trust modules is responsible for the collection and processing for their respective functions. Modules are grouped by classes and processed in stages. Collected data is stored in the device's local storage or on a remote server. In each stage, the analytics are processed by a rules engine. The intermediate trust scores for each stage are processed using a graphical decision tree algorithm and produce a final score. The history of all transactions and score are able to be analyzed to produce a trust report 2614.
In some embodiments, the modules serve a single purpose. A module is isolated from all other modules. A module can only perform its designed action to generate its results. It does not communicate with any other module nor does it access any other part of the ID trust environment. Modules conduct their intended ID analysis or challenge upon request, then return its result. The output is two pieces of data: 1) a resulting score and 2) a confidence level of that score.
A module may perform its action on demand, or it may be given background time to collect data. The module can maintain a history and then produce the resulting score based on that history.
A score is the result of the module's security action. Values are within the range of 0-100. Confidence is a high, medium, or low level of the quality or reliability of the resulting score. For example, if there is a test that normally takes several iterations to complete, and if that number of iterations was done, then the resulting score could be given a high level of confidence. But if the challenge was only completed once or done quickly, then it would have a low level of confidence.
There are six different classes of ID trust modules. Each module is defined to be of only one class. Each class conducts a certain type of challenge described below. There are two types of modules. An analytic module performs its function without user interaction. The other is the challenge module, which interacts with the user. Some modules may run in the background. Others can only execute on-demand and may involve user interaction. Examples of analytics modules that may run in the background include gait (a person's pattern of walking), device usage like typing patterns, micro-tremors generated by the users, and others.
As described herein, the base class is a group of modules are executed to perform a base set of analytics, continuously monitoring the behaviors of the user. This produces a near real-time continuous score. Behaviors which are consistent with the historical behaviors of the user are analyzed. Consistent behaviors may be extremely accurate and can identify a user with fingerprint accuracy.
The pre-transaction class is a group of analytic modules which are executed to identify the user performing the transaction. An example would be to have the camera “look” at the person holding the phone at the time of the transaction. This would provide a sanity check and is possibly only performed if the base trust score is low, and the system is suspicious.
The external class is a group of analytics that performs tests of external factors such as GPS, common routes, barometric pressures, altitudes, time/date, ambient light and others. The module is only used in certain scenarios. Examples include: financial transaction but a user is outside his normal location; or unlocking a door, but the user's GPS location is not near the door. The module will commonly test for suspicious conditions such as: impossible travel—for example, the GPS location history shows the user was in Europe, but 5 minutes later another transaction is performed in Borneo. Suspicious location—for example, the transaction is to unlock a door, but the phone GPS is nowhere near the door. Unusual locations—for example, the user performs a transaction and is not home, at work, or at a common location. For critical transactions, if the user is somewhere unusual, the transaction will involve a higher trust score threshold.
The device class is a group of analytics that tests for the health or security condition of the device itself. These modules analyze the condition of the device hardware and/or operating environment. Any detection of suspicious device health or functionality will drastically reduce the current trust score. These tests are monitoring for conditions such as: hardware tampering, the device has been spoofed by another device, or the device operating system has potential malware.
The hijack class is a group of analytics which monitors for conditions where the device is not in position of the registered user. Any form of hijack detection will drastically lower the current trust score. Examples of hijacks include: pickup detection—the device was set down, then picked up. The device may have been picked up by the owner, but this could be anyone; or handoff detection—the device monitors for when the phone is handed from one person to another. Once this condition is detected, the person holding the phone is suspect, and the trust score is reduced drastically.
A challenge module interacts directly with the user and challenges the user with some action which: tries to guarantee the transaction being performed is done by a human and not some form of malicious software. Malicious software examples are bots, viruses or trojans. Old fashioned versions of this type of challenge include requesting personal information about the user, such as “mother's maiden name.” Due to the amount of personal information having been stolen and shared by bad actors, such challenges are no longer secure. Biometric versions of this challenge include having the user identify themselves by the hardware fingerprint detector. These challenge modules request users to perform actions and can be a nuisance and are only called upon as a last resort when the analytics cannot appropriately identify the current user.
ID trust modules are chosen by a defined order determined by their class. Once the set of modules has been chosen, they are called to perform their challenge. The first module is called, and its result is stored. Then the next module is called, the result is stored, and so on until the last stage has completed.
The sequencer 2608 performs the following: building the proper chain of modules to calculate the trust score receiving policies from the transaction server for each given transaction, and calling modules that involve periodic execution time for monitoring activity in the background. An exemplary sequence of the modules implemented by the sequencer 2608 is Base→Pre-transaction→External→Device→Hijack→Challenge.
The sequencer 2608 determines which module classes are used based on the following criteria: which module class to choose is based on the given policy. The policy is given to the sequencer 2608, which then determines the class of modules to produce the ID trust score. The determination of which class to use for a given policy is complex. If there is more than one module within the chosen class, then module priority is used in the selection of a module. In the case where there are multiple modules selected at the same priority, the resultant trust scores are combined mathematically into a single score. Module priority values are high, med, or low. The value is determined by the security admin user within the admin console of the transaction server.
Once the classes are chosen, constructing the sequence of modules is relatively simple.
1. Select the modules with the highest priority within its class for the specific stage.
2. Add the next module to meet the policy criteria.
3. Repeat until the last module has been added.
The sequencer calls each of the chosen modules and stores their results (score and confidence). It is the processor 2610 that evaluates all of the stored results to determine the final ID trust score. The processor 2610 logs the details used to process the trust score.
There are two key attributes used by the processor 2610: module score and confidence. These two results are provided by the module. Confidence values are high, med, or low and determine if the module's result should affect the computation. Module action—the action to perform is defined by the class of module. The base class establishes a base score and has no action. The other classes have the action to raise or lower the score. Modules produce an intermediate score, and their results are processed in a specific sequence. For example, a base module's result can be overridden by a later hijack module. There are currently six classes of modules, one for each stage. This process performs combined computations and algorithms to derive a final trust score. The following defines the action to perform on the given result of the ID trust module based on its class. The base class generates a base score, a pre-transaction raises the score, and the external, device, hijack classes lower the score. The challenge class is used to raise the score.
The steps below outline the process for obtaining the final ID trust score.
1. First module's results are obtained from the storage and saved as an intermediate result.
2. Next module's results are obtained from the storage.
3. Results of the first intermediate result and the new result are compared according to their confidence and action.
4. The intermediate result may be kept or replaced by the new result.
5. Repeat the process until the last module's results are computed.
The policy supervisor 2606 controls all the logic, calling on the sequencer 2608 and processor 2610 to perform their tasks. Each transaction has different policies including a minimum trust score. If the policy requirements are not met, the transaction is blocked until the trust score increases to an acceptable level (e.g., above a threshold). The policies are defined at the transaction server.
This logic happens during each transaction and does not impact the user experience.
1. Obtain the policy from the transaction server.
2. Call the sequencer to build the chain of modules for the given policy.
3. Pass the chain of modules to the processor.
4. Compare the final ID trust score with the policy.
5. If the score is above the threshold, then the process is complete.
6. If the score is below the threshold, then repeat steps 2-4 adding a challenge module to force a user interaction.
A policy is a set of criteria provided by the transaction server. The server sends the policy to the ID trust library during a transaction. The policy supervisor obtains the trust score based on that criteria. The following are some of the criteria: transaction description, transaction minimum score threshold: minimal acceptable score, location: use the device's location, transaction code, transaction weight, factor priorities, routes, speed, ambient light, temperature/humidity/barometric and the challenge array.
Each module is registered when added to the ID trust library. Adding the module to the ID trust library is simple by including the module at build time by static linking the module inside the SDK project. Registering the module to the ID trust library is accomplished by inserting a record in the module database in the modules registry. The fields in the modules registry include: module name, module description, module class, module priority (determined by the transaction server), and background (activity to perform and rule when to be called).
Logging is a function performed by the processor. As the processor obtains each of the module's results, it logs the module's name and results. The processor also logs the intermediate results as it is processing the chain of all modules.
The system keeps records of all transactions and the results used to calculate all trust scores such as: the analytic descriptive fields, analytic resultant input fields, data storage, policies storage, and default server policies.
The SDK is able to be compiled and distributed in binary for security and competitive reasons. Malicious people should not be able to view the software sources and thereby be allowed to inspect and detect security vulnerabilities.
The specific API definitions are documented in a separate ID trust library technical specification: ID trust library for client and server, ID trust module API, the APIs listed map to software methods and exposed to host app environments, and this product feature is written in a language such as C/C++ which is used in common with many host environments.
The app and/or system is packaged as an SDK, which includes the ID trust functionality, the analytic modules, the challenge modules and adapter modules to support the host environments.
The SDK is available for client apps on iOS and Android devices, in their native format. SDK is available for servers in Node.
The GUI framework is developed as part of the resulting analytics and challenge modules. These GUI templates are skinned to match the host app appearances. If the user is asked to perform a task, such as shake the device, instructions are simple and clear. Only a few words and ideally images are used to explain how to perform the task.
Prior to each transaction, the analytics system performs the trust score analysis. When the trust score is inadequate, the transaction is blocked. This operation is completed quickly to maintain a good user experience.
Any delay in the trust analysis degrades the user experience, so this system performs at sub-second levels. This performance includes strategies such as caching, performing analysis in background processes, using a central database to aggregate analytic module resultant values, and others.
The exception is if the user is asked to perform a task, such as shaking the device. That obviously interrupts the authentication process.
The following examples show processing for each stage, producing a final resultant score.
In this example, the phone monitoring the user behavior with the base modules, but one of the hijack modules detected suspicious behavior and reduced the trust score to 0. This causes a challenge to be performed to raise the trust score to an acceptable level.
In this example, the phone monitoring the user behavior with the Base modules, but one of the Device modules detected suspicious behavior or tampering and reduced the trust score to 60.
In this example, the phone monitoring the user behavior with the base modules, but one of the environmental modules detected a condition which the specific transaction has specific environmental requirements.
This specific transaction had specific location requirements. The environmental module common locations detected that the user/device was located where the user has never been detected and reduced the trust score, subtracting 50 points.
As described herein, analytics are able to be used to identify a user of a device. Examples of analytics include tremor, gait, vehicle motion, and facial recognition. The analytics are able to be grouped into related and unrelated analytics. For example, tremor, gait and car motion are able to be considered related analytics, and they are unrelated to facial recognition. The determination of related and unrelated is able to be performed in any manner. For example, if the analytics share common elements such as being related to motion or being determined using an accelerometer, then they are related. By using related analytics, analysis and feedback are able to be shared among the analytics modules to improve machine learning for user identification.
As the analytics receive and analyze user information, the received information, any appropriate analysis information such as links to classes, and any other learning information is sent to a bus 2902 to direct the information to be stored in a data store 2904. The stored data and learned information are used by the analytics to determine whether a current user of the device is the correct, authorized user (e.g., owner).
Training, feedback and data filtering are able to be performed and received for each of the analytics (including multiple analytics simultaneously). For example, if a user is riding in a car, the vehicle motion analytics are able to detect/analyze the situation, but also, the mobile device may detect tremors/microtremors. However, these tremors/microtremors may be from the vehicle and/or at least change the detected tremors when compared to a user simply standing an holding a mobile device. Therefore, the situational information (e.g., feedback from the vehicle motion analytics) is able to be communicated to the tremor analytics, so that the acquired information is processed correctly (e.g., ignored while in a vehicle, classified as tremor while in a vehicle versus tremor when not in a vehicle, or adjusted based on the vehicle vibrations). In another example, the gait and tremor analytics share information (e.g., feedback). Furthering the example, a user's heartbeat is typically different when he his calmly standing still versus when he is walking, and the user's heartbeat could affect the microtremors detected, so the gait analytics is able to share the information that the user is walking and/or that the user's heartbeat is elevated, so that the microtremor analytics module is able to account for the fact that the user is walking (e.g., the microtremor analytics module distinguishes/classifies data based on the other actions the user is taking at the time such as walking versus sitting versus standing). It is also important to filter out extraneous information that could cause improper learning. For example, if a user is on an escalator, is running a marathon, or dropped his phone, all of these external vibrations are able to confuse the device and lead to poor input data and incorrect analysis by the analytics. Therefore, the analytics are able to use the shared information to better determine what is going on with the user and whether the information is valid, correct and useful data to acquire and use for learning. In some embodiments, if the data is determined to be corrupted in that there are extraneous factors that are affecting the data such that it is not useful for learning, then the acquired data is ignored/deleted. In some embodiments, the data is classified/grouped in a manner such that a first set of data under a first set of circumstances does not affect a second set of data under a second set of circumstances. For example, if a user is a marathon runner, then acquiring the user's tremor information while the user is running is still useful information (potentially many hours per week running), but it will likely be different than the user's tremor information while at rest.
In the step 3002, when a mobile device is sure (e.g., confidence above a threshold) that the user is the correct user (e.g., owner of the device), the analytics monitor and analyze user information such as user actions, other user features (e.g., face, voice), and/or any other user identification information. As described herein, examples of analytics include gait, tremors/microtremors, vehicle motion and facial recognition. The analysis of the user information includes specific details related to the user such as speed of gait, patterns of microtremors, driving patterns, identifying facial features, and much more. The information is stored to be later compared for user identification purposes. Some of the details are shared between the analytics modules, so the gait of a user and/or vehicle motion may affect the microtremors.
In the step 3004, the shared traits are used to fine-tune the analytics information. The shared traits allow information among related analytics to be shared among the related analytics. Additionally, feedback from each of the analytics is able to be shared among the related analytics. For example, if a user is walking with a device, the gait information is able to be shared with the microtremors analytics, so that the microtremors analytics are able to recognize that the microtremors are occurring while the user is walking. As discussed herein, the microtremors of the user at rest are likely to be different than microtremors when a user is walking which are likely to be different than microtremors when a user is running. The information acquired is able to be classified differently or other actions are able to be taken such as discarding/filtering the information. The fine-tuned data is stored appropriately such as corresponding to each related analytics module, and in some embodiments, in classifications or sub-classifications for each related analytics module. For example, in the microtremors analytics module, there are classifications of at rest, walking, running, and driving, each of which store different information based on the actions that the user is taking.
In the step 3006, acquired user information is filtered while the user utilizes the mobile device. Filtering the user information is able to be performed in multiple ways. For example, if the user information is acquired while external forces corrupt the acquired user information, then the user information is discarded. For example, if a user is talking into his phone, and a friend yells into the phone, then the voice acquired would be a mix of the user's voice and the friend's voice, which is not useful for voice recognition, so the data is not used for machine learning and is discarded. Determining whether to discard information is able to be implemented in any manner such as analyzing the acquired information and comparing it to the currently stored information, and if the difference between the information is above a threshold, then the acquired information is discarded. In another example, a user is queried about the difference (e.g., is your new gait because of an injury), and depending on the user's answer, the acquired information may be discarded. In another example, if feedback from a related analytic indicates that the acquired information is unreliable (e.g., it is determined the user is in a vehicle based on GPS feedback), then the acquired information is discarded (e.g., the microtremors from the vehicle corrupt the user's hand microtremors). The user information is also able to be filtered into classifications based on the shared details of the analytics and the feedback from the analytics. When the shared details from one analytics module affects the data of another analytics module, the data is able to be classified separately from previously stored analytics information.
The acquired user information is used to continuously improve learning about the user for the purposes of user identification. An important aspect of learning is that the correct data is used. Therefore, by filtering acquired information that is corrupt, incorrect or otherwise unhelpful, the learning process is more efficient and more accurate such that the device is able to more accurately and more confidently identify the user.
In some embodiments, the order of the steps is modified. In some embodiments, fewer or additional steps are implemented.
In an exemplary implementation, after a user purchases and activates his new mobile phone, a 5 minute identification period is implemented, where a user is directed to perform tasks such as holding the phone, walking while holding the phone, taking a scan/image of the user's face, ear, other identifying feature, talking for voice recognition, typing using the keypad, and/or perform any other identifying steps. After the identification period, the mobile device continues to monitor the user with the analytics. In some embodiments, to ensure that newly acquired data after the identification period is still for the correct user of the device, the user performs an authentication procedure as described herein (e.g., performing known tasks, facial recognition, biometric scans, and/or answering a challenge). Depending on what the user is doing, the analytics will continue to learn and store additional information, possibly generate new analytics classifications or subclassifications, and/or ignore/delete/filter acquired information that is determined to be unhelpful in learning. For example, during the initial identification period, the user walked while holding the phone, but did not run, so based on the accelerometer, GPS and/or other location/tracking devices/applications in the phone, if it is determined the user is running, the microtremors while the user is running are also able to be detected and stored in a new classification under microtremors related to “while running.” In another example, the user is mountain biking (as determined using the accelerometer, GPS and/or other location/tracking devices/applications) which causes irregular tremors which are unhelpful in learning about the user regarding microtremors in the user's hand, so this acquired information is discarded. The analytics with shared details are able to enable a device to continuously learn useful information about a user which is able to be used to properly identify the user while also avoiding learning misleading or erroneous information which may cause a misidentification of the user.
The analytics with shared traits are able to be implemented on a user device and/or a server device. For example, a mobile phone is able to include an application with analytics modules with shared traits to implement learning based on a user's actions and features. In another example, a server device receives information from a user's mobile phone, and the analytics with shared traits on the server device are able to be used to perform learning based on the received information of the user's actions and features.
A shake challenge is able to be used for identification purposes. The shake challenge involves a user device directing a user to shake the user device a specified number of times, and based on the internal components/mechanisms of the user device, the user device is able to identify the user as the user shakes the user device.
When the user performs the shake, the user holds the device in his hand, and shakes the device in the manner specified (e.g., shake the device 3 times). The user device includes components such as accelerometers, gyroscopes, manometers, cameras, touch sensors, and/or other devices which are able to be used to acquire specific movement information related to the shake. For example, the components are able to detect aspects of the shake such as how hard the shake is, the speed of the shake, the direction of the shake, the rotation of the device during the shake, microtremors during the shake, where the user holds the device, and/or any other aspects of a shake. A camera of the device is able to scan the user while the shake occurs to provide an additional layer of analysis. Typically, a user shakes a device in a similar manner (or possibly several similar manners). After many shakes of the user device, the aspects and patterns are able to be detected such that a user's shake is similar to the user's fingerprint in that it is relatively unique. Although any movement is able to be implemented in accordance with the description herein, a shake involves a user moving a user device up and down, and/or forward and backward. The motion typically involves bending movements from a user's wrist, a user's elbow and/or a user's shoulder. For example, in position 3100, the user device is in an up position, and in position 3102, the user device is in a down position, and the shake movement goes from position 3100 to position 3102. In some embodiments, a full shake involves an added step of going back to position 3100.
In the step 3202, a shake challenge is presented to the user. Other challenges are able to be presented to the user as well. Presenting the shake challenge is able to include sub-steps. A randomized aspect of the shake challenge is determined. For example, any of the following are able to be determined at random (e.g., using a random number generator): the number of times to shake the device, how a user is instructed to shake the device (e.g., audibly, via a text message), and/or any other specific details related to the shake challenge (such as the direction of the shake or a pause duration between shakes). The user is then instructed to shake the device the determined number of times. For example, a mobile device plays an audible message for the user to shake the device 3 times. In another example, a video is displayed visibly showing the number of times to shake the device.
In the step 3204, after the user has been instructed to perform the shake challenge, the user takes the actions as directed. For example, the user shakes the device 3 times. While the user shakes the device, the device utilizes components to detect and measure aspects of the shake. The components include accelerometers, gyroscopes, manometers, cameras, touch sensors, and/or other devices (and associated/corresponding applications) which are able to be used to acquire movement information related to the shake. For example, as the user shakes the device, the accelerometers and gyroscopes detect the speed of the shake, the direction/angle of the shake (e.g., straight up and down, side to side, the specific angle), the rapidity of the stop/change of direction, if there is any twisting of the device while being shaken and so on. Microtremors and rotations of the device are able to be detected as well. The manometers and touch sensors are able to be used to detect how hard the user grips the device while shaking, and the specific pressure points where the user grips the device. For example, some users may grip the device with two fingers, one in the front of the device and one in the back of the device. In another example, some users grip the device by placing four fingers on one edge of the device and a thumb on the opposite edge of the device. Some users have a very tight/hard grip, while other users have a weak/loose grip. Users are able to grip the device in any manner, and the device is able to determine the exact location of the fingers, the pressure of each finger, and any other details of the grip. In some embodiments, a camera of the device is able to scan the user (or another object) while the shake occurs to provide an additional layer of analysis. For example, the user is directed to hold the device such that the camera faces the user, so the device is able to perform facial/body recognition during the shake to provide an added layer of security. The components and the information acquired from the components are able to be used to determine the number of shakes. For example, based on acceleration, speed, direction and/or any other information acquired using the components, each motion by the user is able to be determined and how often that motion occurs is able to be determined. Furthering the example, when the user has not started shaking, the speed recorded by the accelerometers is roughly 0; then there is an amount of speed as the user starts to shake, but eventually the speed reaches roughly 0 at the end (or half-way) of his first shake, and the process repeats such that each time (or every other time) the speed reaches 0 is the completion of a shake. More complex analysis is able to be implemented to ensure that each shake is properly computed and acquired such as using time, speed, acceleration and directional information acquired by the components. In some embodiments, historical shake information is used to help determine when a shake has occurred. For example, if a user does a shorter motion for his shake, this historical information is helpful in determining that the user's current short motions are each shakes, whereas, when a user with a longer shake motion performs a short motion, it may mean that the shake has not been completed yet. Other information is able to be used to determine when a shake has been performed such as using machine learning and/or template comparison. For example, training occurs by asking and receiving many people's shake movements which enables machine learning to determine multiple different styles of shaking to be used to determine when a specific user makes a motion and whether that motion is a shake. The machine learning is able to be used to learn about a shaking motion in general, and also a specific user's specific shaking motion. The information/feedback from the components is stored by the device.
In the step 3206, the user information/feedback (e.g., motion/movement information) for the shake challenge is analyzed. For example, the user information/feedback from the current shake challenge is compared with previously stored information/feedback from previous shake challenges/training (for the user) to determine if there is a match. Furthering the example, during a training period and/or previous shake challenges, it is determined that the user typically shakes the device by holding the edges of the device while applying a range of 68-72 pounds of grip strength, and the angle of the shake is in the range of +/−5 degrees from vertical, based on the information acquired from the various components. For the current shake challenge, the user's grip strength is determined to be 71, and the angle of the shake is +3 degrees from vertical, so a match is determined. In some embodiments, determining a match is able to include determining if the current information is sufficiently close to the previously stored information. For example, the current information is able to be within a range or within a specified amount of the previously stored information. In some embodiments, multiple classes of shake results are stored since a user may not shake a device the same way every time, and if the current shake is similar to one of the previous shakes, then it is determined to be a match.
In the step 3208, it is determined if the user followed the directions of the shake challenge and if the user's current shaking motion matches previous shake motion information. For example, if the shake challenge requested 5 shakes, but the information provided to the user device is only 3 shakes, then the challenge fails. In another example, based on previous analysis, the user typically shakes with a motion at a 45 degree angle, but the currently detected shakes are roughly vertical, then the challenge fails. However, if the user performed the correct number of shakes and in a manner similar to previously stored shakes, then the user passes the challenge.
When a challenge fails, another challenge is able to be provided, the user's trust score is decreased, the user is locked out of the device, an alert is sent to another device of the user, and/or another action is taken, in the step 3210.
If the user passes the shake challenge, then the user's trust score (or other score) is increased, in the step 3212. In some embodiments, the trust score (or other score) is increased by a certain amount (e.g., 10 points), by a certain percent (e.g., 50%), and/or the trust score is increased to a specified amount (e.g., 90 points or above a threshold). If the trust score is above a threshold after the shake challenge, the user is able to perform a task permitted based on that specified threshold, in the step 3214. For example, if the user was attempting to log in to his social media account, but his trust score was below the threshold for accessing social media accounts, then after the user passes the shake challenge, his trust score is above the threshold, and he is able to log in to his social media account. In some embodiments, fewer or additional steps are implemented. In some embodiments, the order of the steps is modified.
The shake challenge is able to be implemented on a user device and/or a server device. For example, a mobile phone is able to include an application with a shake challenge module. In another example, a server device receives information (e.g., shake movement information) from a user's mobile phone, and the shake challenge application on the server device is able to be used to perform learning and analysis based on the received information of the user's actions. In some embodiments, a server device communicates a request to a user device for the user to perform the shake challenge, and the information received is able to be analyzed at either device.
In some embodiments, device behavior analytics are implemented. For example, device behaviors include: CPU usage/performance, network activity, storage, operating system processes, sensors (e.g., heat), and/or any other device component behaviors. The behaviors are monitored and reported to a machine learning model/system. The machine learning model/system is able to be on the device itself (e.g., user device such as mobile phone) or another device. A filter is able to be used to ensure the machine learning receives appropriate data. Once the machine learning model has been generated/trained, the device is able to monitor the device components in real-time to compare with the model (where the model is the baseline) to detect any anomalies. When the device is behaving in a non-standard way as compared with the model, then the device or the behaviors are considered to be suspicious. If there is suspicious behavior, the device confidence is reduced which lowers the overall trust score of the device/user.
In the step 3302, the behavior information/analysis is input to a machine learning system. In some embodiments, the behavior information/analysis is filtered, and the filtered results are input to the machine learning system. For example, if a user accidentally drops his phone, there may be a temporary spike in a pressure sensor or another detected effect; however, this is neither a typical activity of the phone use, nor is it a suspicious activity of the phone, so the data from the phone drop is ignored (e.g., not input into the machine learning system or classified as an event to ignore in the machine learning system). In some embodiments, a behavioral pattern is determined and input to the machine learning system. The machine learning system is able to be stored locally on the device or remotely (e.g., in the cloud). The machine learning system uses any artificial intelligence/machine learning to learn/train the machine learning model. The machine learning system is able to be trained initially and also continuously learn as the device functions. For example, a device's functionality may change after a new application is installed on the device. Moreover, depending on the circumstances, certain levels may be allowable while in other circumstances, those levels may be considered suspicious. For example, when a user is playing a video game on his device which is very CPU and GPU intensive, then 90+% CPU and GPU usage is allowable, and the machine learning model is able to learn that a specific application and a high CPU/GPU usage is allowable. However, when a user is not interacting with his device, and the CPU usage is at 100%, the model learns that such as situation is suspicious.
In the step 3304, a device-specific machine learning model is generated/output by the machine learning system. The device-specific machine learning model is able to be stored locally or remotely, and is able to be continuously updated as learning continues while a user utilizes the device.
In the step 3306, the device behavior information is compared with the device-specific machine learning model. The device-specific machine learning model is able to be used as a baseline to compare for analyzing the device's current behaviors/functionality. The device behavior information is able to be compared with the device-specific machine learning model in any manner. For example, a specific aspect of the device (e.g., a temperature sensor) is compared with the model's temperature data, and if the current temperature is within a range, then the current device behavior is sufficiently similar. Furthering the example, the model's temperature is 85° F. under similar circumstances (e.g., based on the same or similar applications running), and the current temperature is 87° F. which is within an allowable +/−3 degrees of the model's temperature. In another example, the model stores a range of previous temperature readings of 83-86° F., so a reading of 87° F. exceeds the stored range, and may trigger an alert and/or a decrease in a trust score. Similarly, the model stores CPU (statistical) information, network information, storage information, and other information, and the current information is able to be compared with the model to determine if the current information is within an allowable range. As described herein, multiple aspects of the current device are able to be compared with the model simultaneously. For example, the current temperature, CPU usage and bandwidth usage are all compared with the model, and although the temperature is slightly outside of an allowable range, but the CPU usage and the bandwidth usage are well below their respective thresholds, so the comparison is considered to be sufficiently similar. Depending on the implementation, various thresholds/settings are able to be configured to ensure the device behavior analytics are secure, but also properly flexible so that the device does not become unusable.
If the device behavior information is not sufficiently similar to the device-specific machine learning model (e.g., above/below a threshold or outside a range), then a score (e.g., the trust score) for the device is decreased, in the step 3308. The trust score is able to be decreased below a specific threshold or by a certain amount or percentage. In some embodiments, further challenges or tests are able to be provided/taken to increase the trust score. In some embodiments, a determination of suspicious activity triggers additional actions such as shutting down the device.
If the device behavior is sufficiently similar to the device-specific machine learning model, then the score (e.g., trust score) is unaffected or the score is increased, in the step 3310.
In some embodiments, fewer or additional steps are implemented. In some embodiments, the order of the steps is modified.
Many aspects of a CPU 3402 are able to be monitored such as the CPU usage and the CPU performance. The CPU usage varies depending on what processes and applications are running (e.g., in the background and/or foreground). Some applications are high CPU usage applications (e.g., gaming applications and video processing applications). Therefore, a high CPU usage by itself is not a concern. The machine learning system will learn that certain applications are high CPU usage. However, if there is a spike in CPU usage by an unknown application or for an unknown reason, this could be a potential problem. CPU performance is generally related to CPU usage, and if a CPU 3402 is overloaded for some reason, the CPU performance may drop.
A GPU 3404 is a graphics processor which is generally used for applications with high quality graphics such as gaming and other mathematical tasks. Similar to the CPU 3402, the GPU 3404 usage and performance are able to be monitored.
Networking components 3406 are able to be monitored such as available bandwidth, upload/download traffic, WiFi or cellular data, open/in-use ports, and/or any other networking information. Networking information 3406 is constantly changing depending on the applications being used, a user's current browser use (e.g., web pages visited) and many other factors. With machine learning, the system is able to learn how the applications, web pages and other device components affect network usage. For example, a video sharing web page likely uses a significant amount of network bandwidth. In contrast, if a user is playing a non-online video game, then a spike in upload data is a suspicious event that could trigger a decrease in a device's trust score.
Storage 3408 is able to be monitored. Hard drives, memory and/or any other storage devices are able to monitored to determine if any unusual storage is occurring. For example, the amount of space remaining on hard drives and memories is able to be analyzed, as well as the rate that the remaining space is increasing or decreasing. For example, if a new application is installed, then the amount of free space decreases, but once the application is fully installed, the decrease of space stops. However, if a malicious program is trying to corrupt a hard drive, then the free space may continue to decline until the hard drive or memory is full which would cause the device to function less efficiently and possibly stop working. Therefore, if the trust score of the device decreases when it is determined that there is an issue with the storage 3408, then access to the device may be affected which could halt the malicious activity. In some embodiments, access to the device is specific to a program/application/thread such that only a specific application does not have access to the device components, but other applications are still able to access the device components.
Applications stored in the storage 3408 are monitored. The applications are able to be user applications, operating system applications/programs/functions, and/or any other applications. The applications are able to be stored locally or remotely but affect the device 3410. For example, an application stored on a cloud device is able to affect the device 3410. With machine learning, the device 3410 is able to learn how the applications (individually and jointly) affect the different components of the device 3410. For example, the device 3410 learns via machine learning that a video game application utilizes a significant portion of the CPU, video card processing, and network bandwidth and causes the temperature of the device to rise 3° F. When a new application is accessed, installed or executed, the device's suspicion level is slightly elevated (and the device trust score drops accordingly), since there may be changes in other device component analysis when compared with the machine learning model. For example, if a new video processing application is installed and executed, the available storage, CPU usage and temperature are affected (less storage available, higher CPU usage and temperature) when compared with the machine learning model. In response to the change, certain actions may be restricted (e.g., access to online accounts), device functions may be throttled/blocked, and/or a challenge may be provided to the user to confirm the changes/new application. For example, the device 3400 may prompt a user to indicate if there was a known change to the device (e.g., Did you install a new app? or Did you install App A?). If the user confirms that the user installed the new application, then the device trust score is able to be restored to the level before the installation, since it has been confirmed that the change was based on intentional actions of the user. In some embodiments, the device trust score is increased, but slightly below the previous trust score to help protect against a user being tricked into installing malware or other malicious software.
Sensors 3410 monitor a device's status/environment such temperature. If a device's CPU becomes too hot, the CPU could overheat and crash. Therefore, most device's already have an automatic shutdown feature to protect against an overheated CPU. Monitoring the temperature with machine learning is also able to be used to track for suspicious activity such as the CPU's temperature increasing significantly based on visiting a certain web site or using a specific application. The rate with which the device or component temperature changes and/or the overall temperature are able to be monitored. For example, if the temperature of the CPU is rapidly increasing, then the device trust score is able to change and/or the user is able to be alerted. The device is able to take actions to halt suspicious activity without user intervention such as closing an application. With machine learning, the device is able to learn how certain applications/sites affect the temperature and/or other information related to the device, such that the device will be able to detect when an application is acting suspiciously. Applications such as graphic-intensive video games or virtual reality are likely to cause a device's temperature to increase, so the device is able to learn that such types of activities and temperature changes are acceptable. However, a fast increase in temperature when a user visits a web page of a foreign country could indicate that malicious activity is occurring which would decrease the device trust score. The analysis and comparison of the currently detected information (e.g., temperature) with the machine learning model is able to incorporate additional current information. For example, if the current temperature of the device is higher than the expected range of the machine learning model, but it is also determined that the current temperature for the user's location is 100° F., and the user with the device is outside, then this added information is used to account for the elevated temperature (e.g., extend the normal temperature range to 3° F. higher), and not affect the device trust score.
Microphones/speakers 3412 are able to be monitored including which applications are accessing/transmitting the microphone information. For example, if a user has given access to two applications to acquire/transfer microphone-received information (e.g., to make phone calls, to perform voice-based searches), but based on machine learning and monitoring, it is determined that a third application is sending voice data (e.g., microphone-received information), then the device trust score is able to be reduced and/or further actions are able to be taken (e.g., blocking the application, disabling the microphone, blocking outgoing network data).
Audio/video/game processors/cards/controllers 3414 are able to be monitored including processing load, usage, and/or performance Game processors are generally very powerful processors that hackers are able to utilize to perform malicious tasks; therefore, monitoring gaming processor usage is a valuable tool to ensure the device 3400 is being used properly.
Activity of a camera 3416 is able to be monitored including analyzing when content (e.g., images/video) is captured, what content is captured, is the content being shared and/or other activity of the camera. A camera 3416 on a mobile device is able to provide a window into a user's life, and if accessed inappropriately, personal information about a user is able to be stolen and/or shared without the user's knowledge. By ensuring the camera 3416 is only used by the user as desired, a user's privacy is able to be protected. A camera 3416 is also able to be used for other malicious purposes such as overloading the device 3400 (more specifically, the storage 3408) by continuously acquiring content. Via machine learning, the device 3400 is able to determine typical uses of the camera 3416. For example, it is determined the user takes many “selfies” and an occasional video, so when the camera starts being used to acquire and stream continuous hours of video, the device 3400 is able to recognize that there may be suspicious activity occurring. This is also an example of multiple aspects of a device 3400 being monitored and utilized to detect suspicious activity. Specifically, the camera 3416 and network activity are able to be monitored and based on the totality of their activity, the device's trust score may be affected.
A power source 3418 is able to be monitored. The power source 3418 such as a battery is able to be overloaded which could cause the battery to catch fire and/or explode. Battery aspects such as power input, how quickly the battery is draining, capacity, current power storage, and/or any other aspects are able to be monitored.
Other aspects 3420 of the device 3400 are also able to be monitored such as GPS/location, USB controllers, optical drives/devices, and input/output devices. For example, a GPS device which determines a user's location is able to be accessed maliciously to steal a user's location data. Furthering an example, if it is determined that a user sparingly turns on the device's location tracking based on machine learning, but then the device's location tracking is on often or repeatedly, then the device's trust score is able to be decreased and/or the GPS device is able to be disabled.
In an example of a malware attack, a user browses the web or downloads an application which happens to be malware that is configured to provide unintended audio, video and location sharing for a set period of time, and then erase its tracks by deleting the data on the storage and ultimately cause the mobile phone to self-destruct by overloading the battery. Before the malware was downloaded, the mobile phone had a device trust score of 95 (out of 100). The mobile phone via machine learning detects that the microphone, camera and GPS are being accessed by an unauthorized application. For example, the mobile phone knows that only Apps A, B and C have access to the microphone and camera, and Apps C, D and E have access to the GPS, and this malware was never given permission to use any of those devices/components. The mobile phone is then able to take an action after determining that an unauthorized access is occurring such as lowering the trust score of the device and/or halting access to those devices, shutting down those devices, and/or providing an alert to the user on the mobile phone or another device. Since multiple devices are being accessed inappropriately, the trust score is lowered significantly (e.g., below one or more thresholds) which causes the device to limit functionality/access on the device (e.g., shut down devices, prevent sharing of data online). If the machine learning model does not detect the unauthorized access some how, the machine learning model is also able to detect a large amount of data sharing (e.g., network bandwidth usage) which is also able to trigger an alert and lower the device trust score which causes functionality to be limited. The machine learning model is also able to detect that data is being deleted at a higher rate than typical, or specific or protected data is being deleted which is a trigger that the trust score of the device should be lowered and other actions should be taken. Lastly, if the malware was not halted yet, the machine learning model is able to detect a surge of power going to the battery, and turn off the device or take another action before the device catches fire/explodes. Each of the effects of the malware is able to be detected by the machine learning model to prevent further damage/harm.
In some embodiments, suspicious activity is able to be classified as some activities are more suspicious than others. For example, a new application being installed on a device could be a concern, but most of the time a new application is one that the user intended to install, so that would be classified in the lowest suspicion category. An application sharing large amounts of data over a network could be suspicious or relatively benign depending on the typical use of the user. Some video-based influencers share large amounts of video data regularly; whereas, other users may never share video data, so the machine learning model is able to learn based on the specific user's activities. Other activities are able to be classified as highly suspicious such as unauthorized location sharing, surges to the power source, and many more. The classification of the activity is able to affect the device trust score and actions taken.
In some embodiments, there are many actions that are able to be taken when suspicious activity is detected. For example, the device trust score is able to be affected based on the detected activity. When a mildly suspicious behavior/event is detected, the device trust score is able to be decreased slightly (e.g., by 1% or 1-3 points), whereas a medium-level suspicious behavior decreases the trust score by 5%, 5-10 points or below a top threshold, and a high-level suspicious behavior decreases the trust score by 50%, 50 points or below the lowest threshold. Therefore, if the user installs one new application, the device score may go from 95 to 94, which would not have any practical effect in terms of device functionality. However, if the user attempts to install 20 new applications, the device score may drop from 95 to 80 (with 1 point drops for each of the first 15 applications), and if the threshold for download/installation functionality is 80, the device may be paused from installing the last 5 applications. In addition to or instead of affecting device functionality, the device is able to perform additional actions automatically or with user input/assistance. For example, the device is able to prompt a user to confirm the desired changes (e.g., You have installed 15 applications recently, are you trying to install more? Y/N). The device is able to automatically shut down components or the entire device. For example, if an attack on the device's storage or power source is occurring, the entire device is able to shut down. In another example, if data is being shared over the network, then WiFi, cellular or other networking access is able to be turned off. In some embodiments, multiple thresholds are implemented such that if the device trust score is above a highest threshold (e.g., 85), then there are no limitations on access/functionality, but if the device trust score is between 75 and 85, then certain access/functionality is limited (e.g., files are not allowed to be deleted, or data is not able to be uploaded/shared), and if the device trust score is 75 or lower, then access/functionality is severely or completely limited (e.g., the device is only able to perform basic functions). Any number of thresholds and limits to access/functionality are able to be implemented.
The device trust score described herein is able to be used in conjunction with the other trust scores to generate an overall user/device trust score.
Homomorphic encryption enables a user/device to perform computations on encrypted data without decrypting the data. The biometric data (or other data) described herein such as fingerprints, face scan, microtremors, gait, shake motion, and many more, is able to be encrypted and stored using homomorphic encryption such that the homomorphically encrypted data is able to be queried for specific biometric data without decrypting the data. In some embodiments, the homomorphically encrypted data becomes a user's password or token (or is used to generate the token). An exemplary query is: “does this match with the gait pattern?”. A system with the homomorphically encrypted data is able to return a response to the query such as “yes” or “no.”
In the step 3502, the user information is encrypted using homomorphic encryption and stored. In some embodiments, the encryption is Partially Homomorphic Encryption (PHE), Somewhat Homomorphic Encryption (SHE) or Fully Homomorphic Encryption (FHE).
PHE enables sensitive data to remain confidential by only allowing select mathematical functions to be performed on encrypted values. Only one operation is able to be performed an unlimited number of times on the ciphertext (e.g., addition or multiplication). Examples of PHE include ElGamal encryption (uses multiplication) and Paillier encryption (uses addition).
SHE enables limited operations (e.g., addition or multiplication) up to a certain complexity, where the limited operations up to a specified complexity are only able to be performed a set number of times.
FHE enables using any computable functions (e.g., addition and multiplication) any number of times which enables secure multi-party computation.
In the step 3504, the homomorphic encrypted information is queried for comparison purposes. The query is able to be implemented in any manner such that the encrypted information remains encrypted during the query. For comparison, an unencrypted database is searchable/queried for a specific content item (e.g., text, image). Similarly, a homomorphic encrypted database is able to be queried (however, without decrypting the database). The encrypted querying is able to be implemented in any manner. For example, the query includes an XOR operation to determine if a match is able to be found between current (newly acquired) user information and the stored, encrypted information. More specifically, the XOR operation is used to compare current user information (or a subsection of the current user information) with the stored encrypted information. In another example, a content item to be searched for (e.g., current information) is encrypted using the same homomorphic encryption as the stored information, and then the current information and the stored information are compared using the XOR or other operation to determine if the same content item is in the homomorphic encrypted data store (e.g., database). By XORing the current information with different segments of the stored information, a match is found when the result of the XOR is 0. In another example, the homomorphic encrypted data store includes gait information which is able to include specific vector information such as speed and direction of a user and the user's arms, from when the user previously walked with the device. Then, when current gait information is acquired as the user is walking, the acquired gait information is compared with the stored homomorphic encrypted gait information. In another example, facial recognition information is encrypted and stored using homomorphic encryption. Then, the user is prompted for facial recognition information again for access, and the acquired facial information is encrypted using homomorphic encryption and then compared with the stored facial recognition information. The query/comparison is able to compare the current user information with stored, homomorphic encrypted information without decrypting the stored homomorphic encrypted information.
In the step 3506, when a match is found, a user's trust score is increased or remains the same. For example, the current behavior/biometric information is compared with the stored homomorphic encrypted behavior information, and when a match is found, then the user's trust score is increased (e.g., above a threshold) or maintained (e.g., if the user's trust score is already above a threshold or at a maximum). In some embodiments, in addition to or instead of affecting a user's trust score, access is granted to a service. For example, a user attempts to log in to his social network account, and if a match is found, then the device and/or system grants access to his social network account. The access is able to be granted in any manner such as generating/providing a token to the social networking system which permits access to the user's account.
In the step 3508, if a match is not found, then a user's trust score is decreased. For example, the current behavior/biometric information is compared with the stored homomorphic encrypted behavior information, and when a match is not found, then the user's trust score is decreased (e.g., below a threshold) and/or more behavior/biometric information is acquired/analyzed. In some embodiments, in addition to or instead of affecting a user's trust score, access is denied to a service when a match is not found.
In some embodiments, fewer or additional steps are implemented. As described herein, when a user's trust score is above a threshold, access is provided to the user on the device. In some embodiments, the order of the steps is modified.
The comparison of the current user information and the stored homomorphic encrypted information is able to be performed on the user device (e.g., mobile phone), a server/cloud device, another device and/or any combination thereof. For example, on the user device, the user device stores the encrypted information and then compares the current user information. In another example, the server device receives user information from a user device, encrypts the user information (or the user device encrypts the user information) using homomorphic encryption, stores the encrypted information, and then compares newly received user information (which is encrypted either at the server or the user device) with the stored encrypted information. The server is then able to take an action such as providing an access token, providing access to a service in another way, and/or adjusting a user's trust score based on the query/comparison of the stored encrypted information and the new/current user information.
Voice analytics are able to be used for user identity verification. A human voice changes in different environments, performing various activities or with various user moods. The voice has different tones such as warm, clear, soft, scratchy, mellow, or breathiness. These tones may relate to different user moods such as anger, calmness, stress, or excitement. Voice qualities also include: pitch, vocal fry, strength, rhythm, resonance, tempo, texture, inflections, and others. For example, a person's voice changes, often to a great extent, in different situations such as talking on a phone, giving a speech, conversing with a close friend, talking in a business meeting, walking, running, exercising, and others. These differences in voice quality and/or voice changes vary widely for individuals and add a great degree of identifiability for specific users.
User identification traditionally was done using Voice Print Analysis. This is currently a common technique, and as such it has been researched and currently is vulnerable to spoofing using various methods.
The method described herein is able to immediately identify a user using real-time machine learning of voice patterns in various situations on an ongoing basis. Requiring a user to purposely speak to a device to identify themselves is not required and is both an undesirable user experience and is a security exposure to automated software attacks or manual malicious activities.
Additionally, voice quality factors are able to be related to other monitorable human factors such as heart rate, physical movements and motion analytics such as gait and others. Moreover, a person walking or running has different vocal qualities than someone at rest. This both allows multiple factors to be related to increase security as well as guaranteeing that the user is human and not malicious software, pre-recorded voices, and so on.
In the step 3602, situational information is acquired. The situational information is able to be acquired in any manner such as by: using the microphone/camera of the device, accessing the user's schedule/calendar, accessing Internet data, accessing application data, and/or another manner. For example, when a user makes a phone call using the phone app on the mobile phone, the application information is able to be acquired. In another example, a user's calendar information is able to be analyzed based on the current time to determine that the user is currently speaking at a meeting or providing a speech.
In the step 3604, biometric and/or behavior information is acquired. As described herein, a user's biometric and behavior information is able to be acquired when the user utilizes the device. For example, when the user walks, the user's arm movements, microtremors, and gait information are able to be acquired, and when the user performs another activity, the specific motions and details are able to be acquired using the sensors and/or components of the device. The biometric/behavior data is able to be acquired using a wearable device such as a smart watch which is able to acquire a user's heart rate and/or other physical information.
Biometric information such as a face scan, 3D face scan, ear scan, fingerprints and/or other information is able to be acquired while a user is talking. For example, if the user's voice is detected via a microphone, a camera of a device is able to be directed at the user's face, ear, or other body part to acquire facial information for a facial scan to further confirm that the user is the authorized user.
In the step 3606, environmental information is acquired. The environmental information is able to be acquired in any manner such as by: using the microphone/camera of the device, using sensors of the device (e.g., a temperature sensor), accessing Internet data (e.g., weather web site), accessing application data, and/or another manner.
In some embodiments, some or all of the steps 3600, 3602, 3604 and 3606 occur simultaneously or nearly simultaneously. The acquired information is able to be stored in any manner to be processed/analyzed. In some embodiments, a device or devices acquire the information described herein without the user actively utilizing the device. For example, a temperature sensor is able to detect and indicate that the current temperature of the room is 90 degrees versus a different room which is 60 degrees. In another example, a device is able to acquire the temperature information in a location by accessing the information from a weather web site.
In the step 3608, the acquired information (e.g., voice information, situational information, biometric/behavior information, environmental information) is analyzed. The acquired information is able to be analyzed in any manner such as using machine learning to detect patterns for learning and for comparisons (of acquired information with stored information) to determine if the current user is the authorized user.
Analyzing the voice information includes analyzing the tone of the voice, the mood of the user and/or other voice qualities. Analyzing a user's tone of voice is able to be performed in any manner such as using machine learning to compare the voice with other voice's that have been classified by tone such as warm, clear, soft, scratchy, mellow, or breathiness. A user's voice is able to be mathematically compared using tonal patterns and/or other data. The tones may relate to different user moods such as anger, calmness, stress, or excitement. Therefore, using a relational database, machine learning and/or another organizational structure/system, the user's voice/tone is able to be correlated to a user's mood. Voice qualities are also able to be analyzed such as pitch, vocal fry, strength, rhythm, resonance, tempo, texture, inflections, and others. The voice qualities are able to be analyzed in any manner such as comparing a user's voice or aspects of the user's voice with stored voices that have been classified. For example, pitches are able to be classified as high, low, and in between or in different groupings. Pitch is able to be determined based on frequency such as high frequency above a certain amount (e.g., 880 hertz) and low frequency below a certain amount (e.g., 55 hertz). The other voice qualities are able to be analyzed and compared using other audio analysis. The voice analysis is able to determine if the user's voice is the authorized user by comparing acquired information and stored information to determine if there is a match (e.g., a pattern and/or any other audio comparison/matching).
The analysis is able to be used to determine a user's situation. For example, a person's voice changes, often to a great extent, in different situations such as talking on a phone, giving a speech, conversing with a close friend, talking in a business meeting, walking, running, exercising, and others. These differences vary widely for individuals and add a great degree of identifiability for specific users. Additionally, languages, dialects, accents, lisps, and/or any other distinctions of a voice are able to be analyzed and learned, as they are useful distinguishing factors. Specific pronunciation distinctions are able to be detected and learned. For example, if a user emphasizes a different syllable of certain words than other people, this could be a helpful distinguishing factor when analyzing the user's voice.
In some embodiments, the content and/or style of the voice information is analyzed. By continuously acquiring and learning from a user's voice, the device is able to determine/learn specific words, phrases or speaking styles that the user uses. Some examples include: a user may say the word “like” or the phase “you know” often (e.g., at least once every 5 words or after 90% of sentences); a user pauses for roughly two seconds after each sentence; a user speaks rapidly without ever pausing for more than half of a second; a user speaks with a detected cadence or rhythm; and/or a user may commonly refer to movie quotes. In another example, vocabulary levels/classes are able to be generated based on words/phrases, and a user's speech is able to be classified based on the words/phrases the user utilizes. For example, a person with an advanced degree will likely have a different vocabulary than someone with much less education, so the vocabulary used is another distinguishing factor when performing voice/language analysis. A user's vocabulary is able to classified in classifications such as levels 1-10 (e.g., level 1 is kindergarten level and level 10 is advanced degree level vocabulary) or some other classification.
Analyzing the situational information includes determining relevance of information to a current situation. For example, based on a current time/date, a user's calendar is able to be analyzed to determine if any meetings or other events are scheduled. A user's voice may be different at a business meeting when compared with a personal lunch with a friend. Similarly, for some people, giving a speech is a stressful event which would cause a user's voice to be different. The user may have an exercise schedule (in the calendar), or it is able to be determined that the user's current location is a gym based on GPS, or it is able to be determined that the user is running by analyzing the user's current speed and location. The camera of a user's device is able to detect exercise equipment and/or movements that indicate exercising. Machine learning is also able to determine that the user walks/runs/exercises at a same/similar time each day. A user's voice is likely to be different while exercising (e.g., more winded). A user's voice is able to be different based on the current situation the user is in, and the different situations and corresponding voice differences are able to be analyzed and learned. Analyzing the situational information also includes determining relationships or correspondences between acquired situational information and the acquired voice information. The relationships/correspondences are able to be learned (e.g., when a user walks, his voice is similar to when the user is at rest (or slightly winded), but when the user runs, his voice sounds more winded, has more pauses and/or any other effects). In some embodiments, the relationships/correspondences are learned by analysis of all of the users of the system, and then refined for the specific user. For example, if it is typical for most users to be winded when they talk and run (based on analysis of all the users), then it is likely that the user will be winded when he talks and runs. Once, the user has been talking and running enough times, the device learns the specific correlation between running and talking for the user.
Analyzing the biometric/behavior information utilizes information acquired using device components such as gyroscopes, sensors, cameras, and/or any other components. As described herein, the acquired information is able to indicate user actions or behaviors such as walking, running, exercising, driving, and many more. The behaviors are able to be recognized and used to determine if the behavior affects the user's voice. A user's behavior is able to affect his voice as described herein such as when the user is walking or running. For example, running causes the user's heart rate to increase or the user to be out of breath, which affect the user's voice. In some embodiments, a user's voice is classified based on the behavior (and/or other categories) such that a user's voice for no activity is classified in a different classification than a user's voice while running. Any number of classifications and sub-classifications are able to be implemented. The behavior information is able to be analyzed with the situational information. For example, situational information such as a calendar appointment may indicate that the user runs at 5 a, and if the sensors indicate that the user is making movements that correspond with running movements at 5:05 a, then there is more certainty that the user is running.
Analyzing the environmental information utilizes information acquired using sensors and/or other sources. For example, a temperature sensor of a device indicates that the ambient temperature is 100° F. A user may be more tired based on the current temperature and/or humidity which could affect the user's voice. Similarly, if a user is very cold (e.g., temperature sensor indicates 0° F.), the user's teeth may chatter a little, which affects the user's voice. Other environmental factors are able to affect a user's voice such as being in a smoky room which could cause a raspy/coughing voice, a dark room where the user whispers instead of speaking normally/loudly, a very loud room (e.g., a concert or party) where the user speaks more loudly than usual, and/or any other environmental factor. By knowing the environmental information, the device is able to account for the differences in the user's voice. For example, if the light sensor or camera of the device determines that the user is in a dark room, the device is able to analyze the user's voice as a whisper instead of comparing the user's voice with a normal voice. Furthering the example, a user's whisper is stored/learned and compared for situations when the user whispers. The different environments and the corresponding voices are able to be classified based on the environment (e.g., a classification for darkness, a classification for hot weather, and so on).
In addition to analyzing the various information separately, the information is also able to be analyzed together. For example, a user running on a cold morning in winter while talking on his phone may have a different voice than the same user running on a hot summer day while talking on his phone. The situational, biometric/behavior and environmental information are all able to be analyzed along with a user's voice to better identify the user based on the current situation, behavior, and/or environment. The analysis of the information includes processing, sorting/classifying and comparing the information. For example, newly acquired voice information (and any accompanying additional information) is compared with stored/learned information to identify the user. Furthering the example, the user attempts to log into a social networking site, and the user's voice is going to be used to gain access. The user has been talking on the device while sitting in the office, and the voice matches the stored voice information (e.g., using a voice matching algorithm and/or any other audio comparison implementation). Since the device recognizes the user as the authorized user, the device is able to access the social networking site.
In some embodiments, voice changes based on the additional information (e.g., situational, behavior, environmental) are analyzed. For example, Person A and Person B may have similar voices in terms of pitch and other voice qualities while at rest, but Person A is physically fit and is able to run and talk with minimal change, whereas person B struggles to talk while running, thus the change of voice from resting to running is able to be detected and analyzed. In another example, Person X is uncomfortable with public speaking (e.g., causes a jittery/trembling voice) while Person Y is an eloquent public speaker, so the change from rest to a business meeting or a public speech is able to be detected and compared, and if Person Y tried to use Person X's device, the device would be able to detect the difference in the change of voice.
The analysis of the information is also able to include learning from the information. For example, machine learning is continuously implemented on the device such that any time the user speaks, the device acquires, analyzes and learns from the information. Additionally, the device learns any contextual information such as situational, behavioral, environmental, and/or other information. Based on the machine learning, the device is able to identify the user based the user's voice and any related information.
In the step 3610, a function is performed based on the analysis of the acquired information. The function is able to include providing or denying access (e.g., to the device, a web site, a social networking account, a bank account, a door, and/or another object/service). The function is able to include adjusting the user's trust score on the device. If the user's voice matches previously stored information based on the analysis, then the user's trust score is maintained or increases and/or access may be granted to a service. If the user's voice does not match the stored information, then the user's trust score is decreased and/or access may be denied to the service. In some embodiments, how close the match is, affects the adjustment of the trust score (e.g., an exact voice match increases the trust score by 10 points or above a top threshold, but a slightly similar voice only increases the trust score by 2 points or above a second level threshold). In some embodiments, performing a function includes generating a token. For example, the token is able to include authorization to access a device and/or service.
In some embodiments, fewer or additional steps are taken. For example, in some embodiments, the environmental information is not acquired or analyzed. In some embodiments, the order of the steps is modified.
Any of the implementations described herein are able to be used with any of the other implementations described herein. In some embodiments, the implementations described herein are implemented on a single device (e.g., user device, server, cloud device, backend device) and in some embodiments, the implementations are distributed across multiple devices, or a combination thereof.
The present invention has been described in terms of specific embodiments incorporating details to facilitate the understanding of principles of construction and operation of the invention. Such reference herein to specific embodiments and details thereof is not intended to limit the scope of the claims appended hereto. It will be readily apparent to one skilled in the art that other various modifications may be made in the embodiment chosen for illustration without departing from the spirit and scope of the invention as defined by the claims.
This application is a continuation-in-part application of co-pending U.S. patent application Ser. No. 16/868,080, filed on May 6, 2020, and titled “USER IDENTIFICATION PROOFING USING A COMBINATION OF USER RESPONSES TO SYSTEM TURING TESTS USING BIOMETRIC METHODS,” which is a continuation-in-part application of co-pending U.S. patent application Ser. No. 16/709,683, filed on Dec. 10, 2019, and titled “SECURITY PLATFORM ARCHITECTURE,” which is hereby incorporated by reference in its entirety for all purposes.
Number | Date | Country | |
---|---|---|---|
Parent | 16868080 | May 2020 | US |
Child | 17497399 | US | |
Parent | 16709683 | Dec 2019 | US |
Child | 16868080 | US |