IP Library Granted Patent US 9,813,393
Granted Patent B2
US 9,813,393 · App. 14/632,954 · Granted Nov 7, 2017

System and method for client-side analytic data collection

Inventors: Kyle Consalus (San Francisco, CA); Alex Sydell (San Francisco, CA)
Assignee: Dropbox, Inc.
H04L63/0457G06F11/3476G06F21/552G06F21/602H04L63/168G06F2221/2151
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,813,393
App. No.
14/632,954
Granted
Nov 7, 2017
Kind
B2
Abstract

A portable computing device with methodologies for client-side analytic data collection are described. In one embodiment, for example, a method performed by a portable computing device having non-volatile memory includes the steps of obtaining event information reflecting runtime behavior of an application executing on the portable computing device; cryptographically encrypting the event information; storing the encrypted event information in the non-volatile memory; decrypting the encrypted event information; and sending the decrypted event information to a server over a data network, the decrypted event information encapsulated in a cryptographically secured network data stream when sent over the data network to the server.

Claims (73)

1. A computer-implemented method comprising:

at a portable computing device comprising one or more processors and non-volatile memory:

storing a log file in the non-volatile memory;

storing a log sequence number in the log file;

obtaining event information reflecting runtime behavior of an application executing on the portable computing device;

cryptographically encrypting the event information;

storing the encrypted event information in the log file in the non-volatile memory;

decrypting the encrypted event information;

compressing the event information;

cryptographically encrypting the compressed event information;

storing the encrypted compressed event information in the non-volatile memory;

decrypting the encrypted compressed event information; and

sending the log sequence number and the decrypted compressed event information to a server over a data network, the log sequence number and the decrypted compressed event information encapsulated in a cryptographically secured network data stream when sent over the data network to the server.

2. The method of claim 1 , further comprising:

cryptographically encrypting the event information using an encryption key;

decrypting the encrypted event information using the encryption key; and

wherein the cryptographically secured network data stream is not cryptographically secured using the encryption key.

3. The method of claim 1 , wherein the cryptographically secured network data stream comprises a Hypertext Transfer Protocol Secure (HTTPS) data stream.

4. The method of claim 1 , further comprising:

cryptographically encrypting the event information using a cryptographic stream cipher.

5. The method of claim 1 , wherein the decrypted event information comprises a Javascript Object Notation (JSON)-compliant format.

6. The method of claim 1 , further comprising:

decrypting the event information prior to cryptographically encrypting the event information.

7. The method of claim 1 , wherein the steps of cryptographically encrypting the event information, storing the encrypted event information, decrypting the encrypted event information, and sending the decrypted compressed event information are performed in one or more processes or threads of the application that are not configured to handle user interface events in the application.

8. The method of claim 1 , further comprising:

summarizing the event information;

cryptographically encrypting the summarized event information;

storing the encrypted summarized event information in the non-volatile memory;

decrypting the encrypted summarized event information;

compressing the summarized event information;

cryptographically encrypting the compressed summarized event information;

decrypting the encrypted compressed summarized event information; and

sending the decrypted compressed summarized event information to the server over the data network, the decrypted compressed summarized event information encapsulated in a cryptographically secured network data stream when sent over the data network to the server.

9. The method of claim 1 , wherein the step of obtaining the event information is performed in a first process or thread, and wherein the step of sending the decrypted compressed event information to the server over the data network is performed in a second process or thread that is not the first process or thread.

10. The method of claim 1 , wherein the event information comprises a plurality of events, each event of the plurality of events comprising a boot timestamp indicating a time of the event since a last boot of the portable computing device.

11. A portable computing device comprising:

one or more processors;

non-volatile memory coupled to the one or more processors; and

one or more computer-readable media coupled to the one or more processors and storing one or more sets of instructions which, when executed by at least one of the one or more processors, causes the device to perform the operations of:

storing a log file in non-volatile memory of the portable computing device;

storing a log sequence number in the log file;

obtaining event information reflecting runtime behavior of an application executing on the portable computing device;

cryptographically encrypting the event information;

storing the encrypted event information in the log file in the non-volatile memory;

decrypting the encrypted event information;

compressing the event information;

encrypting the compressed event information;

storing the encrypted compressed event information in the non-volatile memory;

decrypting the encrypted compressed event information; and

sending the log sequence number and the decrypted compressed event information to a server over a data network, the log sequence number and the decrypted compressed event information encapsulated in a cryptographically secured network data stream when sent over the data network to the server.

12. The device of claim 11 , wherein the operations further comprise:

cryptographically encrypting the event information using an encryption key;

decrypting the encrypted event information using the encryption key; and

wherein the cryptographically secured network data stream is not cryptographically secured using the encryption key.

13. The device of claim 11 , wherein the cryptographically secured network data stream comprises a Hypertext Transfer Protocol Secure (HTTPS) data stream.

14. The device of claim 11 , wherein the operations further comprise:

cryptographically encrypting the event information using a cryptographic stream cipher.

15. The device of claim 11 , wherein the decrypted event information comprises a Javascript Object Notation (JSON)-compliant format.

16. The device of claim 11 , wherein the operations further comprise:

decrypting the event information prior to cryptographically encrypting the event information.

17. The device of claim 11 , wherein the operations of cryptographically encrypting the event information, storing the encrypted event information, decrypting the encrypted event information, and sending the decrypted compressed event information are performed in one or more processes or threads of the application that are not configured to handle user interface events in the application.

18. The device of claim 11 , wherein the operations further comprise:

summarizing the event information;

cryptographically encrypting the summarized event information;

storing the encrypted summarized event information in the non-volatile memory;

decrypting the encrypted summarized event information;

compressing the summarized event information;

cryptographically encrypting the compressed summarized event information;

decrypting the encrypted compressed summarized event information; and

sending the decrypted compressed summarized event information to the server over the data network, the decrypted compressed summarized event information encapsulated in a cryptographically secured network data stream when sent over the data network to the server.

19. The device of claim 11 , wherein the one or more computer-readable media comprise the non-volatile memory.

20. The device of claim 11 , wherein the operation of obtaining the event information is performed in a first process or thread, and wherein the operation of sending the decrypted compressed event information to the server over the data network is performed in a second process or thread that is not the first process or thread.

21. The device of claim 11 , wherein the event information comprises a plurality of events, each event of the plurality of events associated in the event information with a boot timestamp specifying a time of the event relative to a time of a last boot of the portable computing device.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069635/0332 →
SECURITY INTEREST Recorded Dec 12, 2024
From: DROPBOX, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069604/0611 →
RELEASE OF SECURITY INTEREST Recorded Dec 12, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069613/0744 →
PATENT SECURITY AGREEMENT Recorded Mar 10, 2021
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 055670/0219 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 8, 2018
From: CONSALUS, KYLE; SYDELL, ALEX
To: DROPBOX, INC.
Reel/Frame 046288/0098 →
SECURITY INTEREST Recorded Apr 14, 2017
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 042254/0001 →
Continuity (2)
Continuation 13853315 · Mar 29, 2013
Related Publication 20150172259A1 · Jun 18, 2015