IP Library › Granted Patent US 10,608,817
Granted Patent B2
US 10,608,817 · App. 15/642,632 · Granted Mar 31, 2020

Secure and zero knowledge data sharing for cloud applications

Inventors: Amer Haider (Saratoga, CA); Ali Ahmed (Saratoga, CA)
Assignee: Masimo Corporation
H04L9/3221G06F16/951G06F21/14G06F21/6218G06F21/6227H04L9/0825H04L9/14H04L63/0428H04L63/06H04L67/10H04L2463/062
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 10,608,817
App. No.
15/642,632
Filed
Jul 6, 2017
Granted
Mar 31, 2020
Kind
B2
Examiner
SONG, HOSUK
Art Unit
2435
USPC
713/170
Abstract

Disclosed is a zero-knowledge distributed application configured to securely share information among groups of users having various roles, such as doctors and patients. Confidential information may be encrypted client-side, with private keys that reside solely client side. Encrypted collections of data may be uploaded to, and hosted by, a server that does not have access to keys suitable to decrypt the data. Other users may retrieve encrypted data from the server and decrypt some or all of the data with keys suitable to gain access to at least part of the encrypted data. The system includes a key hierarchy with multiple entry points to a top layer by which access is selectively granted to various users and keys may be recovered.

Claims (71)

1. A method, comprising:

obtaining, by one or more processors of a first client device, a private key for a first user of the first client device that is paired to a public key for the first user of the first client device;

receiving, by one or more processors of the first client device, encrypted user data over a network, the encrypted user data having been created by a second user of a second client device;

receiving, by one or more processors of the first client device, a shared data key hierarchy structure (SD-KHS) over the network, the SD-KHS comprising one or more encrypted shared data encryption keys (ESDEKs);

decrypting, by one or more processors of the first client device, an ESDEK with the private key to make available a shared data encryption key (SDEK); and

decrypting, by one or more processors of the first client device, the encrypted user data with the SDEK to make available the user data;

editing, by one or more processors of the first client device, one or more elements of the user data;

encrypting, by one or more processors of the first client device, a notification message using a public key for the second user of the second user device, wherein the notification message comprises an indication of the user data having been edited to at least the second user of the second user device; and

sending, by one or more processors of the first client device, the notification message over the network.

2. The method of claim 1 , wherein the private key is obtained by decrypting an encrypted private key (EPK) that was stored as part of a key hierarchy structure (KHS).

3. The method of claim 1 , wherein the SDEK is encrypted with the public key of the first user of the first user device by the second user device.

4. The method of claim 1 , wherein the SDEK is not stored in a non-volatile memory.

5. The method of claim 1 , wherein each of the ESDEKs is stored as a different array or set of arrays of the SD-KHS.

6. The method of claim 1 , wherein the second user is a service provider.

7. The method of claim 1 , wherein when the user data created by the second user is to be shared with at least the first user a shared copy of the user data is created.

8. A method, comprising:

deriving, by one or more client-side processors, a derived key (DK) based on information provided by a user of a client device without the information or the DK being made available to other parties;

receiving, by one or more client-side processors, encrypted user data sent from a server over a network, the encrypted user data having been created by the user of the client device;

decrypting, by one or more client-side processors, an encrypted master encryption key (EMEK) with the DK to make available a master encryption key (MEK), wherein the MEK serves to encrypt data encryption keys;

decrypting, by one or more client-side processors, an encrypted data encryption key (EDEK) with the MEK to make available a data encryption key (DEK), wherein the DEK serves to encrypt user data;

decrypting, by one or more client-side processors, the encrypted user data with the DEK;

decrypting, by one or more client-side processors, another encrypted data encryption key with the MEK to make available a private key, the private key being paired to a public key stored in a lookup directory of the server device;

receiving, by one or more client-side processors, encrypted shared user data sent from the server device over the network, the encrypted shared user data having been created by another user of another client device;

receiving, by one or more client-side processors, a shared data key hierarchy structure sent from the server device over the network, the shared data key hierarchy structure comprising one or more encrypted shared data encryption keys (ESDEKs) and having been created for the another client device;

decrypting, by one or more client-side processors, an ESDEK with the private key to make available a shared data encryption key (SDEK); and

decrypting, by one or more client-side processors, the encrypted shared user data with the SDEK.

9. The method of claim 8 , wherein the EMEK and the EDEK had been stored in a key hierarchy structure (KHS).

10. The method of claim 9 , wherein the information provided by the user, the DK, the MEK, and the DEK are not stored in non-volatile memory before or after the information is provided.

11. The method of claim 9 , wherein names of entries of the KHS are obfuscated.

12. The method of claim 8 , comprising:

requesting, by a server-side processor, a password from the user; and

receiving, by the server-side processor, the password from the user, wherein the information provided by the user comprises the password such that the DK is a password derived key (PDK).

13. The method of claim 12 , comprising:

generating, by the one or more client-side processors, a random salt variable;

hashing, by the one or more client-side processors, the password; and

repetitively applying a pseudorandom function, by the one or more client-side

processors, to the hashed password and the random salt variable.

14. The method of claim 13 , comprising:

concatenating, by the one or more client-side processors, the one or more answers and the one or more security questions;

generating, by the one or more client-side processors, a random salt variable;

hashing, by the one or more client-side processors, the concatenation; and

passing, by the one or more client-side processors, the hashed concatenation and the random salt variable through a Password-Based Key Derivation Function (PBKDF).

15. The method of claim 8 , comprising:

requesting, by a server-side processor, one or more answers to one or more security questions from the user;

receiving, by the server-side processor, the one or more answers to the one or more security questions from the user, wherein the information provided by the user comprises the one or more answers to the one or more security questions such that the DK is a questions-based derived key (QDK).

16. The method of claim 8 , wherein two or more of the encryption of the user data, encryption of the DEK, and encryption of the MEK are performed with means for encrypting data.

17. The method of claim 8 , wherein each of the encryption of the user data, encryption of the DEK, and encryption of the MEK is performed with a different algorithm.

18. A tangible, non-transitory, machine-readable media storing instructions that when executed by a client computing device in a zero knowledge messaging system effectuate operations comprising:

deriving, by the one or more client-side processors, a derived key (DK) based on information provided by a user of the client device without the information or the DK being made available to other parties;

receiving, by the one or more client-side processors, encrypted user data sent from another device over a network;

decrypting, by the one or more client-side processors, an encrypted master encryption key (EMEK) with the DK to make available a master encryption key (MEK), wherein the MEK serves to encrypt data encryption keys;

decrypting, by the one or more client-side processors, an encrypted data encryption key (EDEK) with the MEK to make available a data encryption key (DEK), wherein the DEK serves to encrypt user data; and

decrypting, by the one or more client-side processors, the encrypted user data with the DEK,

generating, by the one or more client-side processors, a random salt variable;

hashing, by the one or more client-side processors, the password; and

repetitively applying a pseudorandom function, by the one or more client-side processors, to the hashed password and the random salt variable;

generating, by the one or more client-side processors, a random salt variable;

hashing, by the one or more client-side processors, the password; and

repetitively applying a pseudorandom function, by the one or more client-side processors, to the hashed password and the random salt variable.

19. The media of claim 18 , wherein the EMEK and the EDEK had been stored in a key hierarchy structure (KHS).

20. The media of claim 19 , wherein the information provided by the user, the DK, the MEK, and the DEK are not stored in non-volatile memory before or after the information is provided.

21. The media of claim 18 , the operations comprising:

concatenating, by the one or more client-side processors, the one or more answers and the one or more security questions;

generating, by the one or more client-side processors, a random salt variable;

hashing, by the one or more client-side processors, the concatenation; and

passing, by the one or more client-side processors, the hashed concatenation and the random salt variable through a Password-Based Key Derivation Function (PBKDF).

22. The media of claim 18 , the operations comprising:

requesting, by a server-side processor, one or more answers to one or more security questions from the user;

receiving, by the server-side processor, the one or more answers to the one or more security questions from the user, wherein the information provided by the user comprises the one or more answers to the one or more security questions such that the DK is a questions-based derived key (QDK).

23. The media of claim 18 , wherein two or more of the encryption of the user data, encryption of the DEK, and encryption of the MEK are performed with means for encrypting data.

24. The media of claim 18 , wherein each of the encryption of the user data, encryption of the DEK, and encryption of the MEK is performed with a different algorithm.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 7, 2019
From: HAIDER, AMER
To: MASIMO CORPORATION
Reel/Frame 049989/0187 →
Continuity (2)
Provisional Application 62358783 · Jul 6, 2016
Related Publication 20180013562A1 · Jan 11, 2018
Cited By (151)
US 1,057,159 US 1,057,160 US 1,060,680 US 1,061,585 US 1,063,893 US 1,066,244 US 1,066,672 US 1,068,656 US 1,071,195 US 1,072,836 US 1,072,837 US 1,078,689 US 1,079,020 US 1,083,653 US 1,085,102 US 1,092,244 US 1,095,288 US 1,095,483 US 1,102,622 US 1,106,466 US 1,119,639 US 1,124,917 US 1,127,209 US 1,132,251 US 1,140,023 US 1,146,885 US 1,148,151 US 1,149,054 US 12,186,079 US 12,193,813 US 12,193,849 US 12,198,790 US 12,201,420 US 12,201,702 US 12,205,208 US 12,207,419 US 12,207,901 US 12,211,617 US 12,214,274 US 12,220,205 US 12,220,207 US 12,220,257 US 12,226,206 US 12,230,391 US 12,230,393 US 12,230,396 US 12,232,888 US 12,232,905 US 12,235,941 US 12,235,947 US 12,236,767 US 12,237,081 US 12,238,489 US 12,250,203 US 12,257,022 US 12,257,081 US 12,257,183 US 12,263,018 US 12,272,445 US 12,283,374 US 12,295,708 US 12,302,426 US 12,310,695 US 12,318,175 US 12,318,176 US 12,318,196 US 12,318,229 US 12,318,580 US 12,322,185 US 12,329,548 US 12,336,796 US 12,343,108 US 12,343,142 US 12,347,202 US 12,357,181 US 12,357,203 US 12,357,237 US 12,357,243 US 12,362,596 US 12,364,403 US 12,367,973 US 12,374,843 US 12,383,194 US 12,390,114 US 12,390,140 US 12,394,285 US 12,396,667 US 12,402,816 US 12,402,832 US 12,402,843 US 12,408,869 US 12,414,711 US 12,419,588 US 12,433,524 US 12,440,128 US 12,440,171 US 12,458,297 US 12,465,270 US 12,465,286 US 12,478,272 US 12,478,293 US 12,484,844 US 12,495,967 US 12,495,968 US 12,495,998 US 12,495,999 US 12,507,952 US 12,514,503 US 12,521,021 US 12,521,039 US 12,521,506 US 12,533,068 US 12,533,089 US 12,538,084 US 12,539,046 US 12,541,293 US 12,543,978 US 12,558,033 US 12,575,797 US 12,582,313 US 12,587,806 US 12,592,009 US 12,593,980 US 12,609,013 US 12,611,117 US 12,616,623 US 12,627,987 US 12,642,491 US 12,648,718 US 12,661,039 US 12,661,488 US 12,667,307 US 12,677,331 US 12,689,232 US 12,691,223 US 12,694,892 US 12,702,202 US 12,702,333 US 12,702,755 US 12,708,328 US 12,714,369 US 12,727,766 US 12,727,826 US 12,728,202 US 12,731,671 US 12,733,845 US 12,733,847 US 12,740,728 US 12,744,134 US 12,745,932 US 12,750,228