IP Library › Granted Patent US 8,869,144
Granted Patent B2
US 8,869,144 · App. 12/968,069 · Granted Oct 21, 2014

Managing forwarding of input events in a virtualization environment to prevent keylogging attacks

Inventors: Ian Pratt (Cambridge, GB); Jean Guyader (Cambridge, GB); Vincent Hanquez (Cambridge, GB)
Assignee: Citrix Systems, Inc.
G06F21/629G06F21/554G06F9/45533G06F2009/45587G06F21/83G06F2221/2101G06F2221/2147G06F21/556G06F9/45558G06F21/57G06F21/53G06F2221/2107G06F21/31G06F2221/2143G06F2221/2115H04L63/20G06F21/79G06F21/85
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,869,144
App. No.
12/968,069
Granted
Oct 21, 2014
Kind
B2
Abstract

The methods and systems described herein provide functionality for managing injection of input events to one virtual machine of a plurality of guest virtual machines, in a computing device executing a hypervisor hosting a trusted virtual machine and a non-trusted virtual machine. An input manager receives a first item of input data from an input device communicating with the computing device. The input manager identifies whether the first item of input data includes a predetermined string. The input manager forwards, responsive to the identification, the first item of input data to one of (i) a first virtual machine of a plurality of guest virtual machines executed by the processor of the computing device and (ii) an application executed by the control virtual machine, wherein at least one virtual machine of the plurality of guest virtual machines is a trusted virtual machine.

Claims (38)

1. A method for managing forwarding of input events in a virtualization environment to prevent keylogging attacks, comprising:

receiving, by an input manager executed by a processor of a computing device, a first item of input data from an input device communicating with the computing device; and

identifying, by the input manager, whether the first item of input data includes a predetermined string;

forwarding, by the input manager, the first item of input data to:

(i) a trusted guest virtual machine executing in the virtualization environment responsive to identifying that the first item of input data includes the predetermined string and the predetermined string does not comprise a predefined control string, and a window generated by the trusted guest virtual machine does not have focus;

(ii) a non-trusted guest virtual machine executing in the virtualization environment responsive to identifying that the first item of input data includes the predetermined string and the predetermined string does not comprise the predefined control string, and the window generated by the trusted guest virtual machine has focus;

(iii) the trusted guest virtual machine responsive to identifying that the first item of input data does not include the predetermined string, and the window generated by the trusted guest virtual machine has focus;

(iv) the non-trusted guest virtual machine responsive to identifying that the first item of input data does not include the predetermined string, and the window generated by the trusted guest virtual machine does not have focus; and

(v) a control virtual machine executing in the virtualization environment responsive to identifying that the first item of input data includes the predetermined string and the predetermined string comprises the predefined control string.

2. The method of claim 1 , wherein the first item of input data includes a predetermined string comprising a secure key combination.

3. The method of claim 1 , further comprising:

determining whether a window generated by an application executed by the trusted guest virtual machine has focus.

4. The method of claim 1 , wherein forwarding the first item of input data to the control virtual machine comprises forwarding the first item of input data to an application executed by a hypervisor executing in the virtualization environment or the control virtual machine.

5. The method of claim 4 , wherein forwarding the first item of input data to the application comprises providing, by the application, access to a management console, an authentication window or a secure input box.

6. The method of claim 4 , wherein forwarding the first item of input data to the application comprises mapping the input device to the control virtual machine.

7. The method of claim 1 , further comprising generating a visual indicator to indicate that the first item of input data is forwarded to the trusted guest virtual machine.

8. The method of claim 1 , wherein receiving the first item of input data by the input manager comprises receiving the first item of input data by the input manager executed by the control virtual machine or a hypervisor executing in the virtualization environment.

9. The method of claim 1 , further comprising notifying, by the trusted guest virtual machine, the input manager when the window generated by the trusted guest virtual machine receives focus.

10. A system for managing forwarding of input in a virtualization environment to prevent keylogging attacks, comprising:

a computing device comprising a processor executing a hypervisor, a control virtual machine, a trusted guest virtual machine, a non-trusted guest virtual machine, and an input manager in the virtualization environment; and

an input device communicating with the computing device,

wherein the input manager is configured to:

receive a first item of input data from the input device,

identify whether the first item of input data includes a predetermined string, and

forward the first item of input data to:

(i) the trusted guest virtual machine responsive to identifying that the first item of input data includes the predetermined string and the predetermined string does not comprise a predefined control string, and a window generated by the trusted guest virtual machine does not have focus;

(ii) the non-trusted guest virtual machine responsive to identifying that the first item of input data includes the predetermined string and the predetermined string does not comprise the predefined control string, and the window generated by the trusted guest virtual machine has focus;

(iii) the trusted guest virtual machine responsive to identifying that the first item of input data does not include the predetermined string, and the window generated by the trusted guest virtual machine has focus;

(iv) the non-trusted guest virtual machine responsive to identifying that the first item of input data does not include the predetermined string, and the window generated by the trusted guest virtual machine does not have focus; and

(v) the control virtual machine responsive to identifying that the first item of input data includes the predetermined string and the predetermined string comprises the predefined control string.

11. The system of claim 10 , wherein the first item of input data includes a predetermined string comprising a secure key combination.

12. The system of claim 10 , wherein the input manager determines whether a window generated by an application executed by the trusted guest virtual machine has focus.

13. The system of claim 10 , wherein the input manager forwards the first item of input data to the control virtual machine, comprising forwarding the first item of input data to an application executed by the hypervisor or the control virtual machine.

14. The system of claim 13 , wherein the input manager forwards the first item of input data to the application, the application providing access to a management console, an authentication window or a secure input box.

15. The system of claim 10 , wherein the input manager is further configured to generate a visual indicator to indicate that the first item of input data is forwarded to the trusted guest virtual machine.

16. The system of claim 13 , wherein the computing device maps the input device to the control virtual machine.

17. The system of claim 10 , wherein the input manager executes on the control virtual machine or the hypervisor.

18. The system of claim 10 , wherein the input manager is notified by the trusted guest virtual machine when the window generated by the trusted guest virtual machine receives focus.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 23, 2011
From: PRATT, IAN; GUYADER, JEAN; HANQUEZ, VINCENT
To: CITRIX SYSTEMS, INC.
Reel/Frame 026005/0148 →
Continuity (8)
Provisional Application 61286263 · Dec 14, 2009
Provisional Application 61286266 · Dec 14, 2009
Provisional Application 61286215 · Dec 14, 2009
Provisional Application 61286216 · Dec 14, 2009
Provisional Application 61286218 · Dec 14, 2009
Provisional Application 61286636 · Dec 15, 2009
Provisional Application 61286619 · Dec 15, 2009
Related Publication 20110145820A1 · Jun 16, 2011