US 12,443,766 B2
Peripheral device
Stavros Volos, Cambridge (GB); David Thomas Chisnall, Cambridge (GB); Saurabh Mohan Kulkarni, Redmond, WA (US); Kapil Vaswani, Bangalore (IN); Manuel Costa, Cambridge (GB); Samuel Alexander Webster, Cambridge (GB); Cédric Alain Marie Fournet, Cambridge (GB); Richard Osborne, Bristol (GB); Daniel John Pelham Wilkinson, Bristol (GB); and Graham Bernard Cunningham, Chippenham (GB)
Assigned to Microsoft Technology Licensing, LLC, Redmond, WA (US)
Filed by Microsoft Technology Licensing, LLC, Redmond, WA (US)
Filed on Jan. 22, 2024, as Appl. No. 18/419,359.
Application 18/419,359 is a continuation of application No. 17/374,942, filed on Jul. 13, 2021, granted, now 11,921,911.
Application 17/374,942 is a continuation of application No. 16/166,047, filed on Oct. 19, 2018, granted, now 11,126,757, issued on Sep. 21, 2021.
Prior Publication US 2024/0160795 A1, May 16, 2024
Int. Cl. H04L 29/00 (2006.01); G06F 21/60 (2013.01); G06F 21/85 (2013.01); H04L 9/30 (2006.01); H04L 9/32 (2006.01)
CPC G06F 21/85 (2013.01) [G06F 21/602 (2013.01); H04L 9/30 (2013.01); H04L 9/3265 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A method for securely transferring data between a first trusted computing entity and a second trusted computing entity by an untrusted intermediary, the method comprising: sending, to the second trusted computing entity, a request to create a trusted execution environment (TEE) at the second trusted computing entity, the request comprising a first authentication tag; receiving an indication from the second trusted computing entity that the TEE has been created; after verifying the indication, encrypting a plurality of blocks of data at the first trusted computing entity using, for each block of the data in the plurality of the encrypted blocks of data, a pair comprising a key and an initialization vector; storing, at the first trusted computing entity, a parameterized function for obtaining initialization vectors, the parameterized function being known to the second trusted computing entity; copying the plurality of the encrypted blocks of data from the first trusted computing entity to a virtual address space of the untrusted intermediary such that the second trusted computing entity is able to retrieve the plurality of the encrypted blocks of data by making direct memory access requests using the parameterized function; and enabling data to be transferred between the first trusted computing entity and the second trusted computing entity based at least on the first authentication tag matching a second authentication tag computed by the second trusted computing entity from data received from the direct memory access requests.