IP Library Granted Patent US 9,391,832
Granted Patent B1
US 9,391,832 · App. 13/531,201 · Granted Jul 12, 2016

Secure surrogate cloud browsing

Inventors: Xiaodong Dawn Song (Berkeley, CA); Ian Fischer (Berkeley, CA); Gautam Altekar (Sunnyvale, CA); Lorenzo Martignoni (Zurich, CH); Zvonimir Pavlinovic (Berkeley, CA)
Assignees: Menlo Security, Inc.; The Regents of the University of California
H04L29/14H04L29/0809H04L41/5025
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 9,391,832
App. No.
13/531,201
Granted
Jul 12, 2016
Kind
B1
Abstract

Surrogate browsing techniques are disclosed. A request for a page is received, from a client, by a surrogate. The specified page is requested by the surrogate. The page is rendered at the surrogate. A representation of the page is transmitted to the client. An event is received from the client. An update is sent to the client after reproducing the received event at the surrogate.

Claims (46)

1. A system, comprising:

a set of one or more processors, configured to use a set of one or more interfaces to:

receive, at a surrogate, a request from a client device for a page;

request, from a site, the page specified by the client device;

render, at the surrogate, data received from the site in response to the request made by the surrogate, on behalf of the client device, for the specified page;

perform at least one transformation operation on the rendered data to generate a representation of the rendered data, wherein the representation of the rendered data comprises Document Object Model (DOM) layout content;

transmit the representation of the rendered data to the client device, wherein the representation of the rendered data transmitted to the client device comprises DOM layout content;

receive an event from the client device, wherein the event corresponds to a user interaction at the client device with a browser application;

reproduce the received event at the surrogate; and

transmit an update to the client device after reproducing the received event at the surrogate; and

a memory coupled to the set of one or more processors and configured to provide the set of one or more processors with instructions.

2. The system of claim 1 wherein the representation of the rendered data comprises an image of the rendered data.

3. The system of claim 1 wherein the set of one or more processors is further configured to use the set of one or more interfaces to transmit DOM updates to the client device.

4. The system of claim 3 wherein the DOM updates are transmitted using a DOM transfer command language.

5. The system of claim 1 wherein the set of one or more processors is further configured to encode the DOM layout content.

6. The system of claim 1 wherein the surrogate is a first surrogate, and wherein the set of one or more processors is further configured to render a second page for the client device in a second surrogate.

7. The system of claim 1 wherein the page is a first page and is associated with a first domain and wherein reproducing the event causes the surrogate to visit a second page that is associated with a second domain that is different from the first domain and wherein the system is configured to visit the second page using a second surrogate.

8. The system of claim 1 wherein the set of one or more processors is further configured to generate a short URL for the page prior to receiving the request for the page from the client device.

9. The system of claim 1 wherein rendering the data received from the site at the surrogate includes rendering JavaScript.

10. The system of claim 1 wherein receiving the event includes at least one of receiving a mouse click and receiving a keyboard entry.

11. The system of claim 1 wherein the set of one or more processors is further configured to receive a second event from the client device.

12. The system of claim 11 wherein the set of one or more processors is further configured to determine which of a plurality of surrogates should receive the second event based at least in part on a reverse proxy lookup.

13. The system of claim 1 further comprising a session manager configured to manage cookies between sessions.

14. The system of claim 1 wherein transmitting the representation includes inserting modification data into a resource.

15. The system of claim 14 wherein the modification comprises cryptographic material.

16. The system of claim 1 wherein the system is further configured to perform a verification on the representation of the rendered data prior to transmitting it to the client device.

17. The system of claim 16 wherein performing the verification includes determining whether a command included in a DOM update is included in a list of approved commands.

18. A method, comprising:

receiving, at a surrogate, a request from a client device for a page;

requesting, from a site, the page specified by the client device;

rendering, at the surrogate, data received from the site in response to the request made by the surrogate, on behalf of the client device, for the specified page;

performing at least one transformation operation on the rendered data to generate a representation of the rendered data, wherein the representation of the rendered data comprises Document Object Model (DOM) layout content;

transmitting the representation of the rendered data to the client device, wherein the representation of the rendered data transmitted to the client device comprises DOM layout content;

receiving an event from the client device, wherein the event corresponds to a user interaction at the client device with a browser application;

reproducing the received event at the surrogate; and

transmitting an update to the client device after reproducing the received event at the surrogate.

19. A computer program product embodied in a tangible computer readable storage medium and comprising computer instructions for:

receiving, at a surrogate, a request from a client device for a page;

requesting, from a site, the page specified by the client device;

rendering, at the surrogate, data received from the site in response to the request made by the surrogate, on behalf of the client device, for the specified page;

performing at least one transformation operation on the rendered data to generate a representation of the rendered data, wherein the representation of the rendered data comprises Document Object Model (DOM) layout content;

transmitting the representation of the rendered data to the client device, wherein the representation of the rendered data transmitted to the client device comprises DOM layout content;

receiving an event from the client device, wherein the event corresponds to a user interaction at the client device with a browser application;

reproducing the received event at the surrogate; and

transmitting an update to the client device after reproducing the received event at the surrogate.

20. The method of claim 18 further comprising transmitting DOM updates to the client device.

Assignments (3)
MERGER Recorded Jun 6, 2016
From: SAFELY, INC.
To: MENLO SECURITY, INC.
Reel/Frame 038822/0841 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 10, 2012
From: FISCHER, IAN
To: SAFELY INC.
Reel/Frame 028929/0938 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 10, 2012
From: SONG, XIAODONG DAWN; ALTEKAR, GAUTAM; MARTIGNONI, LORENZO; PAVLINOVIC, ZVONIMIR
To: THE REGENTS OF THE UNIVERSITY OF CALIFORNIA
Reel/Frame 028929/0945 →
Continuity (1)
Provisional Application 61567039 · Dec 5, 2011