IP Library › Granted Patent US 8,689,213
Granted Patent B2
US 8,689,213 · App. 12/968,084 · Granted Apr 1, 2014

Methods and systems for communicating between trusted and non-trusted virtual machines

Inventors: Ross Philipson (Bedford, MA); Steven Smith (Cambridge, GB); James McKenzie (Cambridge, GB); Jean Guyader (Cambridge, GB)
Assignee: Citrix Systems, Inc.
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,689,213
App. No.
12/968,084
Granted
Apr 1, 2014
Kind
B2
Abstract

The methods and systems described herein provide for establishing a secure communication channel between a non-trusted virtual machine and a trusted virtual machine, in a computing device executing a hypervisor hosting the trusted virtual machine, the non-trusted virtual machine, and a third virtual machine. The method includes writing, by a non-trusted virtual machine, a first string of data to a region of memory of the computing device. The method also includes detecting, by a trusted virtual machine, the first string of data written to the region of memory. The method further includes establishing a communication channel between the trusted virtual machine and the non-trusted virtual machine by locking, by the trusted virtual machine and responsive to the detection, the region of memory for the duration of the communication to prevent a third virtual machine from accessing the region of memory.

Claims (29)

1. In a computing device executing a hypervisor hosting a trusted virtual machine, a non-trusted virtual machine, and a third virtual machine, a method for establishing a secure communication channel between the non-trusted virtual machine and the trusted virtual machine, comprising:

writing, by a non-trusted virtual machine executed by a processor of a computing device, a first string of data to a region of memory of the computing device;

detecting, by a trusted virtual machine executed by the processor of the computing device, the first string of data written to the region of memory;

establishing a communication channel between the trusted virtual machine and the non-trusted virtual machine by locking, by the trusted virtual machine and responsive to the detection, the region of memory for a duration of the communication channel to prevent a third virtual machine executed by the processor of the computing device from accessing the region of memory; and

destroying the communication channel, by one of the non-trusted virtual machine and the trusted virtual machine, by allowing the third virtual machine to access the region of memory.

2. The method of claim 1 , further comprising monitoring the region of memory of the computing device by the trusted virtual machine, prior to the non-trusted virtual machine writing the first string of data.

3. The method of claim 1 , further comprising selecting, by the trusted virtual machine, the region of memory, prior to the non-trusted virtual machine writing the first string of data.

4. The method of claim 1 , further comprising reserving, by the trusted virtual machine, the region of memory to be a region reserved for communicating with the non-trusted virtual machine, prior to the non-trusted virtual machine writing the first string of data.

5. The method of claim 1 , wherein the first string of data comprises an identification of the non-trusted virtual machine.

6. The method of claim 1 , further comprising exchanging data between the non-trusted virtual machine and the trusted virtual machine by:

writing, by the non-trusted virtual machine, the data to the region of memory; and

reading, by the trusted virtual machine, the data from the region of memory.

7. The method of claim 6 , wherein writing the data to the region of memory further comprises encrypting the data.

8. The method of claim 6 , wherein writing the data to the region of memory further comprises issuing, by the non-trusted virtual machine, an interrupt to the trusted virtual machine, the interrupt generated responsive to completion of writing the data; and wherein reading the data from the region of memory is performed by the trusted virtual machine responsive to receiving the interrupt.

9. In a computing device executing a hypervisor hosting a trusted virtual machine, a non-trusted virtual machine, and a third virtual machine, a system for establishing a secure communication channel between the non-trusted virtual machine and the trusted virtual machine, comprising:

a computing device comprising a memory unit and a processor executing a hypervisor hosting a trusted virtual machine, a non-trusted virtual machine, and a third virtual machine;

wherein the non-trusted virtual machine is configured to write a first string of data to a region of the memory unit of the computing device,

wherein the trusted virtual machine is configured to detect the first string of data written to the region of the memory unit, and establish a communication channel between the trusted virtual machine and the non-trusted virtual machine by locking, responsive to the detection, the region of the memory unit for a duration of the communication channel to prevent the third virtual machine from accessing the region of the memory unit, and

wherein one of the non-trusted virtual machine and the trusted virtual machine is further configured to destroy the communication channel by allowing the third virtual machine to access the region of the memory unit.

10. The system of claim 9 , wherein the trusted virtual machine is further configured to monitor the region of the memory unit, prior to the non-trusted virtual machine writing the first string of data.

11. The system of claim 9 , wherein the trusted virtual machine is further configured to select the region of the memory unit, prior to the non-trusted virtual machine writing the first string of data.

12. The system of claim 9 , wherein the trusted virtual machine is further configured to reserve the region of the memory unit to be a region reserved for communicating with the non-trusted virtual machine, prior to the non-trusted virtual machine writing the first string of data.

13. The system of claim 9 , wherein the first string of data comprises an identification of the non-trusted virtual machine.

14. The system of claim 9 , wherein the non-trusted virtual machine is further configured to write the data to the region of the memory unit; and the trusted virtual machine is further configured to read the data from the region of the memory unit.

15. The system of claim 14 , wherein writing the data to the region of memory further comprises encrypting the data.

16. The system of claim 14 , wherein the non-trusted virtual machine is further configured to issue an interrupt to the trusted virtual machine, the interrupt generated responsive to completion of writing the data; and wherein reading the data from the region of the memory unit is performed by the trusted virtual machine responsive to receiving the interrupt.

17. The method of claim 1 , wherein the third virtual machine is a third trusted virtual machine, and the method further comprises:

preventing the third trusted virtual machine from accessing the region of the memory unit.

18. The system of claim 9 , wherein the third virtual machine is a third trusted virtual machine, and the trusted virtual machine is configured to prevent the third trusted virtual machine from accessing the region of the memory unit.

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 Apr 21, 2011
From: PHILIPSON, ROSS; SMITH, STEVEN; MCKENZIE, JAMES; GUYADER, JEAN
To: CITRIX SYSTEMS, INC.
Reel/Frame 026161/0351 →
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 20110145821A1 · Jun 16, 2011