Use encryption key exchange and rotation to share passwords via shared folders
By encrypting shared keys in shared folders and using public key encryption technology to securely share passwords in multi-user and multi-device environments, the shortcomings in management and security of traditional systems are solved, and flexible password management and high security protection are achieved.
Patent Information
- Application Number
- JP2023208757
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-12-23
- Filing Date
- 2023-12-11
- Publication Date
- 2025-04-04
- Estimated Expiration
- 2041-08-26
AI Technical Summary
Traditional credential storage systems have shortcomings in management and security, and cannot effectively manage and protect login information flexibly in multi-user and multi-device environments, and there is a possibility of network security risks and data loss.
Enable flexible password management and protection in multi-device and multi-user environments by encrypting shared keys in shared folders and using public key encryption to securely share passwords. In addition, the system automatically rotates the shared key and updates the public key set when it detects a membership change or other key rotation event, ensuring that only devices with current access can decrypt the key and data.
It realizes flexible password management and high security protection in multi-user and multi-device environments, reducing the possibility of network security risks and data loss, while improving the flexibility and reliability of the system.
Smart Images

Figure 0007657281000001 
Figure 0007657281000002 
Figure 0007657281000003
Abstract
Description
[Background technology]
[0001] Technological advances in network communications and the capabilities of computing devices have increased access to many different types of services over network connections. For example, many online systems provide remote access to services through a login interface that allows a user to log into their account on the system. Thus, such online systems allow a user to create a separate user account, with login information (e.g., a username and password), for each of the different services. Because users often have many different accounts for many different services, each with its own login information, the users may find it difficult to remember and securely manage the login information for each of the different services.
[0002] Many conventional credential storage systems provide storage of login information for different accounts. For example, some conventional systems store authentication information on a local client device or on a remote device (e.g., cloud storage) that allows a user to access his / her login information to log into accounts for various services from a central location. In particular, some conventional credential storage systems store and encrypt passwords to various services behind a central credential (e.g., username / password combination or biometric credential). Alternatively, other conventional credential storage systems encrypt passwords using public encryption keys and distribute these public encryption keys to client devices that can use the corresponding private encryption key to decrypt the passwords.
[0003] Although these conventional credential storage systems provide a central location to digitally store login information for users, conventional systems exhibit several drawbacks. Specifically, conventional systems utilize a single collection of credentials (e.g., associated with a single user) to access login information for different services, thereby limiting access to only those users who also have access to the credentials. Thus, if a first user of a conventional system wishes to give a second user access to any of the login information, the first user must give the second user the credentials. Providing the second user with the credentials also gives them access to all of the login information stored in the account, rather than selective sharing of the login information. Thus, conventional credential storage systems lack the flexibility and security to extend use beyond a single user.
[0004] In addition to strict login information access protocols, credential storage systems that share digital data between users and client devices pose network security risks and data loss risks. For example, after a user leaves a sharing group that shares secure data among users, the former members of the sharing group pose a security risk and should no longer have access to the secure data. For example, if a user associated with a computing device that has a private encryption key leaves the sharing group, the leaving user may continue to access the secure data until the computing device updates its collection of public encryption keys corresponding to authorized members of the sharing group. In addition to this, differences in encrypted and synchronized data across client devices when encrypting or re-encrypting data across client devices can result in data loss. For example, asynchronous connections to a central location (e.g., a server) can cause the server or other computing devices to lose data when the client devices exchange or transmit different encryption key versions or different payloads stored on the client devices (e.g., in the case of key rotation). Thus, any conventional credential storage (or other) system that shares data between client devices poses the risk of both compromised network security and data loss. Summary of the Invention
[0005] This disclosure describes one or more embodiments of a system, method, and non-transitory computer-readable storage medium that provide benefits and / or solve one or more of the aforementioned and other problems in the art. For example, the disclosed system encrypts a shared key in a payload for a shared folder and securely shares passwords from the shared folder across computing devices. To facilitate encryption of such passwords, the disclosed system retrieves a public encryption key for one or more client devices (e.g., each additional shared folder member) that have membership access to the shared folder in association with providing access to the shared folder. The disclosed system also provides a public key set that includes the public encryption key to an initial client device associated with an account in the content management system. Upon receiving the public key set, the initial client device utilizes the shared encryption key to encrypt a payload (e.g., a set of passwords) for uploading to the shared folder, and then encrypts the shared encryption key using the public key set. Thus, the disclosed system receives both the encrypted payload and the shared encryption key (encrypted by the public key set) from the initial client device for storage in the shared folder.
[0006] In addition to (or instead of) encrypting such payloads, in some embodiments, the disclosed system securely rotates keys across computing devices based on changes in the membership of the shared folder or some other key rotation event. In response to detecting a key rotation event, for example, the disclosed system notifies client devices that have membership access to the shared folder of the key rotation event and updates the public key set. The disclosed system provides the updated public key set to each of the client devices that have current access to (or membership in) the shared folder. After providing such updated key set, the disclosed system receives from the initiator client device the updated encrypted payload and a modified (i.e., rotated) shared encryption key encrypted using the updated public key set. Thus, the disclosed system may automatically rotate the shared encryption key while preventing access to client devices that do not have membership access to the shared folder.
[0007] Additional features and advantages of one or more embodiments of the present disclosure will be set forth in the description that follows, and in part will be obvious from the description, or may be learned by the practice of such example embodiments. [Brief description of the drawings]
[0008] Various embodiments will be described and explained with additional specificity and detail through the use of the accompanying drawings. [Figure 1] 1 illustrates a schematic diagram of an environment in which a password sharing system operates according to one or more implementations. [Figure 2A] , [Figure 2B] 1 illustrates an illustration of a password sharing system that manages a collection of passwords in a shared folder and rotates a shared encryption key for multiple client devices, according to one or more implementations. [Figure 3A] , [Figure 3B] 1 illustrates a flow diagram illustrating operations for a password sharing system for encrypting a payload for a shared folder using a shared encryption key and a public encryption key, according to one or more implementations. [Figure 4A] , [Figure 4B] 1 illustrates a flow diagram illustrating operations for a password sharing system for rotating a shared encryption key for a shared folder in response to a key rotation event, according to one or more implementations. [Figure 5A] , [Figure 5B] An exemplary graphical user interface for providing password management and credential autofill in accordance with one or more implementations is described. [Figure 6] 2 illustrates a diagram of a password sharing system in FIG. 1 according to one or more implementations. [Figure 7] 1 illustrates a flowchart of a series of operations for utilizing encryption key exchange and key rotation to share passwords via a shared folder, in accordance with one or more embodiments. [Figure 8] 1 illustrates a block diagram of a computing device in accordance with one or more embodiments. [Figure 9] A networked environment for an online content management system according to one or more embodiments is described. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0009] This disclosure describes one or more embodiments of a password sharing system for encrypting a shared key in a payload and synchronizing the shared password across client devices by one or both of key exchange and key rotation of the shared key and a public encryption key. For example, in some embodiments, the password sharing system determines that an initial client device initiates a request to share a shared folder with one or more client devices. The password sharing system reads a public encryption key from the client device and then provides the public encryption key to the initial client device. In some cases, the initial client device uses the shared encryption key to encrypt a payload (e.g., a set of passwords) for the shared folder and then uses the public encryption key to encrypt the shared encryption key. The password sharing system further receives the encrypted payload and the shared encryption key (encrypted using the public key set) from the initial client device and stores the received encrypted payload and the shared encryption key in the shared folder.
[0010] As described above, in some embodiments, the password sharing system generates a shared folder for sharing a set of passwords from an initial client device to one or more additional client devices. For example, in response to a request from an initial client device to share the set of passwords, the password sharing system generates a shared folder for storing the set of passwords. In at least some embodiments, the password sharing system generates one or more subfolders within the shared folder to assign different access permissions to one or more client devices that have membership access to the shared folder.
[0011] The password sharing system retrieves a public key set including a public encryption key from the client device when the initial client device sends a request to create a shared folder for sharing a set of passwords. In particular, the password sharing system may obtain a public encryption key for each client device that is to be granted membership access to the shared folder. In one or more embodiments, the password sharing system identifies a public encryption key previously received from each client device when registering the client device with the password sharing system. The password sharing system also provides the public key set to the initial client device for use by the initial client device in encrypting a shared encryption key for delivering payloads from the initial client device to the password sharing system.
[0012] After providing the public key set to the initial client device in connection with the request to create the shared folder, the password sharing system receives an encrypted payload and a shared encryption key from the initial client device. Using the shared encryption key, the initial client device may encrypt a payload including a set of passwords for storage in the shared folder. In addition to encrypting the payload with the shared encryption key, the initial client device may encrypt the shared encryption key using the public key set from the password sharing system. Thus, the password sharing system receives an encrypted version of the shared encryption key along with the encrypted payload from the initial client device and stores the payload along with the encrypted version of the shared encryption key in the shared folder.
[0013] After the password sharing system receives the encrypted payload and the corresponding shared encryption key from the initial client device, in some implementations, the password sharing system enables other client devices to access the contents of the shared folder. In particular, in response to a request to access the contents of the shared folder by another client device, the password sharing system may validate the requesting client device and provide the encrypted payload and an encrypted version of the shared encryption key to the requesting client device. The requesting client device may decrypt the encrypted version of the shared encryption key (e.g., using the requesting device's private encryption key). Finally, the requesting client device may decrypt the encrypted payload using the shared encryption key to access the contents of the shared folder.
[0014] In addition to (or instead of) sharing the password with the requesting client device, in some embodiments, the password sharing system rotates the shared encryption key to improve security. For example, in response to detecting a key rotation event, the password sharing system notifies the client devices of the event and retrieves an updated set of public keys from the client devices that have current membership access to the shared folder. The password sharing system may then provide the updated set of public keys to each of the client devices that have current access or membership to the shared folder.
[0015] After the password sharing system detects the key rotation event and notifies the client device of the key rotation event, the client device rotates the shared encryption key by generating a modified (e.g., new) shared encryption key. The client device further encrypts a payload containing the password with the modified shared encryption key and encrypts the modified shared encryption key with the updated set of public keys received from the password sharing system. Such encrypted payloads may contain the same set of passwords or a new set of passwords. The password sharing system receives the updated encrypted payload and the modified shared encryption key from the client device and stores them in the shared folder. In some embodiments, the password sharing system also detects conflicts between client devices attempting to upload updated shared folder data to the password sharing system by determining initiator and follower devices based on the order in which data (e.g., payloads) are received / committed. The password sharing system also does not allow payload commits from client devices that are not initiator devices (e.g., based on the revision number associated with each received payload).
[0016] In addition to initializing or rotating a shared key for a shared folder, in some additional embodiments, the password sharing system provides advanced access control levels to the collection of passwords via the shared folder. For example, the password sharing system may assign different access permissions to different client devices (and / or user accounts) based on the folder hierarchy within the shared folder. To illustrate, the password sharing system may allow different client devices to view, create, or modify one or more subsets of passwords by utilizing various access control levels for the client devices associated with one or more subfolders within the shared folder.
[0017] The password sharing system described herein provides improvements to computing devices that implement credential storage. Specifically, the password sharing system improves security by utilizing key exchange or key rotation via a public and shared encryption key to share passwords across devices and user accounts. As alluded to above, traditional credential storage systems can pose network security risks by using a central credential (e.g., username / password combination) to protect a set of encrypted credentials that, if used by an unauthorized user or device, may allow access to various online services. In contrast to a single traditional credential as a shield, the password sharing system introduces multiple layers of encryption that improve password protection security by encrypting the payload for the shared folder that contains both the password and the shared encryption key.
[0018] To facilitate such multi-layered encryption, for example, a password sharing system may provide an initial public encryption key exchange from one or more client devices to an initial client device for use by the initial client device in encrypting a shared encryption key. The password sharing system receives (and is written and provided by) an encrypted payload and a shared encryption key, and the initial client device encrypts the shared encryption key with the public encryption key from the client device. Upon receiving the encrypted payload, the password sharing system stores the encrypted payload and the shared encryption key in a shared folder. Thus, the password sharing system securely provides access to a collection of passwords beyond traditional single credential protection or standard public-private key encryption by restricting access to the encrypted payload in the shared folder to only those devices that have the corresponding private key to decrypt the shared encryption key.
[0019] In addition to the security protections provided by the shared folder structure, the password sharing system also improves the security of computing devices that share secure content by utilizing key rotation across client devices and user accounts. In particular, by detecting changes in the membership of a shared folder, or by detecting some other key rotation event that triggers a rotation of the shared encryption key for authorized client devices, the password sharing system prevents unwanted client devices from accessing the encrypted content. More specifically, by rotating the shared encryption key used to encrypt payloads in the shared folder and updating the public key set for the client device in response to a key rotation event, the password sharing system can ensure that only client devices with current membership access to the shared content can decrypt the shared encryption key (and thus the encrypted payload).
[0020] As discussed above, conventional credential storage systems can pose security risks by using a single or central credential that exposes passwords (if discovered) or by using conventional public-private-encryption-key pairs that may continue to expose passwords or other secure data to former members who have left the sharing group (if the public key is not updated). In contrast to such conventional systems, the password sharing system ensures that encryption keys held by former members of a shared folder cannot access the contents of the shared folder at any time after they leave the sharing membership by automatically rotating the shared encryption key and re-encrypting the payload with the new shared encryption key upon detecting a key rotation event.
[0021] In addition to improving security, the password sharing system also protects against data loss or corruption by providing a payload with a shared encryption key in the shared folder. For example, the password sharing system prevents data loss by ensuring that the shared encryption key is always included with the payload before committing the payload. Specifically, by including the shared encryption key with the encrypted payload, the password sharing system and client device may verify the validity of the stored shared encryption key via a comparison between the current version of the shared encryption key and the version of the shared encryption key stored with the payload. Thus, the password sharing system may easily detect mismatched key versions and prevent storing a payload with a shared encryption key that does not have the correct key version. By verifying the version of the shared encryption key used to encrypt the payload for the shared folder and storing the shared encryption key with the payload, the password sharing system also prevents data loss that would otherwise result from differences in encryption keys or payloads, as previously described.
[0022] Additionally, the password sharing system provides flexibility by providing access to the shared content through the shared folders. For example, the password sharing system may utilize access control levels within a hierarchy of shared folders (e.g., including subfolders) to specify access to specific subfolders (e.g., passwords or password subgroups) for each client device that has membership to the shared folder. The password sharing system may also specify the type of access rights each client device has to each subfolder by indicating whether each client device may read and write each subfolder and / or create new subfolders (e.g., to view, change, or create new passwords). Thus, in combination with key exchange and key rotation, the password sharing system may utilize access control levels to provide a combination of access control and encryption that securely and flexibly stores passwords for access by multiple client devices and / or user accounts.
[0023] 1 illustrates a schematic diagram of a system environment 100 in which a password sharing system 102 may operate. In particular, the system environment 100 includes a server 104 and client devices 106a-106n that communicate over a network 108. Additionally, as illustrated, the server 104 includes a content management system 110 that includes the password sharing system 102. Additionally, the client devices 106a-106n may include client applications 112a-112n, respectively.
[0024] As illustrated in FIG. 1 , the server 104 includes or hosts a content management system 110. In one or more embodiments, the content management system 110 includes or is part of one or more systems that implement management of digital content items for storing, sharing, creating, modifying, or displaying digital content items for one or more users of the content management system 110 on one or more client devices (e.g., client devices 106a-106n). For example, the content management system 110 provides tools for viewing, creating, editing, sharing, or otherwise interacting with digital content items. To illustrate, the content management system 110 provides tools for creating or editing digital content items having text, images, or other media to the client devices 106a-106n via the client applications 112a-112n.
[0025] In some embodiments, client applications 112a-112n include web browsers, applets, or other software applications (e.g., native applications) available to client devices 106a-106n, respectively. Additionally, in some examples, content management system 110 provides data including instructions that, when executed by client devices 106a-106n, create an application or web page, or otherwise integrate with one of client devices 106a-106n, respectively. In this regard, in some embodiments, content management system 110 provides data to a client device (e.g., client device 106a) for a remote graphical user interface (or other graphical user interface) for a user to interact with digital content items via a client application (e.g., client application 112a) on the client device.
[0026] Additionally, in one or more embodiments, the content management system 110 provides secure storage of digital security credentials (e.g., passwords, usernames) for sharing across multiple computing devices. For example, the content management system 110 includes a password sharing system 102 for storing and sharing a collection of passwords for access by the client devices 106a-106n. Specifically, the password sharing system 102 communicates with a first one of the client devices 106a-106n over the network 108 to obtain a collection of passwords and store the collection of passwords in a shared folder. The password sharing system 102 then provides the client device 106a-106n with access to the shared folder containing the collection of passwords.
[0027] As used herein, the term "password" refers to a credential for accessing an account, digital content, digital files, or computing device associated with a service, such as, for example, a sequence of characters or code for accessing an account. Additionally, a password may include or be associated with additional login information, such as an account name (e.g., a username). Additionally, a password may include other secure information utilized by a service to identify a user or to validate an attempt to log in to an account. In one or more additional embodiments, a password includes payment credentials (e.g., credit / debit card information) or membership information associated with one or more services. As used herein, the term "password collection" refers to one or more passwords. Additionally, a password collection may include one or more subgroups of passwords, each of which includes one or more distinct passwords.
[0028] As further used herein, the term "shared folder" refers to a digital storage location or file for sharing digital content between two or more computing devices or users. For example, a shared folder may include a digital storage location in a cloud storage medium that provides access to the digital storage location to two or more computing devices according to a shared folder identifier. A shared folder may not, at least initially, include a payload. Furthermore, a shared folder may include a hierarchy that includes one or more subfolders. Furthermore, a shared folder may be a subfolder within another folder (e.g., a root folder that includes a user's personal passwords that are not shared with other users). A shared folder may be one of multiple shared folders within a root folder, with each shared folder having its own shared membership.
[0029] In one or more additional embodiments, the password sharing system 102 communicates with the client devices 106a-106n to exchange encryption keys in connection with sharing the collection of passwords. In particular, the password sharing system 102 retrieves a public key collection including a public encryption key from the client devices 106a-106n based on the client devices 106a-106n having membership access to a shared folder that includes the collection of passwords. The password sharing system 102 may also provide the public encryption key to one or more of the client devices 106a-106n in connection with obtaining a payload for storage in the shared folder.
[0030] As used herein, the term "public encryption key" (or "public key") refers to an encryption key as part of a public-private key pair associated with a client device or user that is widely distributed. In some cases, a first client device uses the public key of a second client device to encrypt digital data (e.g., for access by a second client device). Conversely, as used herein, the term "private encryption key" (or "private key") refers to an encryption key as part of a public-private key pair associated with a client device that is kept secret or stored by the client device. In some cases, the client device uses the private encryption key to decrypt digital data that was encrypted using a corresponding public encryption key from the public-private key pair. Thus, the public encryption key is accessible to a client device that encrypts data for the owner client device to decrypt using the corresponding private encryption key. As used herein, the term "public key collection" refers to one or more public encryption keys associated with one or more client devices.
[0031] As further used herein, the term "payload" refers to data sent or transmitted from a sending computing device to a receiving computing device for storage at the receiving computing device. In some cases, the payload includes the digital data intended to be transmitted between such computing devices, but excludes any accompanying metadata or headers. For example, the payload may include a set of passwords that a client device sends to a storage system (e.g., a content management system) for storage in a shared folder accessible from one or more computing devices. In some embodiments, the payload may also include a set of passwords in a shared folder that a storage system sends to one or more client devices for storage locally at the one or more client devices. Further, as used herein, the term "encrypted payload" refers to a payload that is encrypted via an encryption key.
[0032] As further illustrated by FIG. 1, the password sharing system 102 also communicates with the client devices 106a-106n to perform key rotation in response to a key rotation event associated with the shared folder. For example, the password sharing system 102 detects a key rotation event that indicates it is time to update the encryption key utilized to encrypt the payload of the shared folder. The password sharing system 102 may communicate with the client devices 106a-106n to update the public key set and provide the updated public key set to each client device that has current access rights or membership to the shared folder. In one or more embodiments, one of the client devices 106a-106n rotates the shared encryption key, re-encrypts the payload of the shared folder, and provides the updated encrypted payload along with the shared encryption key (encrypted using the updated public key set) to the password sharing system 102. The password sharing system 102 then provides access to the updated payload of the shared folder to the client devices 106a-106n over the network 108.
[0033] As used herein, the term "key rotation event" refers to a detected action or other indicator that initiates a rotation of an encryption key. For example, a key rotation event may trigger an update or change of an encryption key by generating a new encryption key to replace an existing encryption key. In one or more embodiments, a key rotation event may include, but is not limited to, an indication of a change in shared membership for a shared folder, an indication of a command from a client device to change a shared encryption key, or an indication of a time threshold associated with a shared folder. Additionally, a key rotation event may include an initiation by the password sharing system in response to a manual request (e.g., a request by a customer service agent on behalf of a user) to rotate an encryption key.
[0034] As further used herein, the term "shared membership" refers to access permissions to a folder for one or more accounts or client devices. For example, the shared membership may include a user identifier, an account identifier, and / or a device unique identifier that are permitted to access the folder. In one or more embodiments, the shared membership is stored in a metadata file or database in association with the folder to determine if a given client device has access to the folder stored on the server 104 in association with the content management system 110 and / or password sharing system 102.
[0035] In one or more embodiments, each of the client devices 106a-106n may include, but is not limited to, a mobile device (e.g., a smart phone or tablet), a laptop, or a desktop, including those described below with reference to FIG. 8. Additionally, although not shown in FIG. 1, the client devices 106a-106n may be associated with one or more user accounts and operated by one or more users (e.g., users associated with the content management system 110) to perform various functions. In particular, in one or more embodiments, the client devices 106a-106n perform functions such as, but are not limited to, accessing, viewing, and interacting with various digital content (e.g., via client applications 112a-112n). Additionally, the client devices 106a-106n also perform functions to generate, capture, or access data for provision to the content management system 110 over the network 108. In one or more embodiments, one or more of the client devices 106a-106n perform operations to encrypt a payload and encrypt a shared encryption key for transmission to the password sharing system 102 in connection with sharing a collection of passwords among the client devices 106a-106n.
[0036] In one or more embodiments, server 104 includes various computing devices, including those described below with reference to FIG. 8. For example, server 104 may include one or more servers for storing and processing data associated with digital content items (e.g., text, images, video, audio). Server 104 may also include multiple computing devices in communication with each other, such as in a distributed storage environment. In some embodiments, server 104 includes a content server. In one or more embodiments, server 104 may include an application server, a communication server, a web hosting server, a social networking server, a digital content campaign server, or a digital communication management server.
[0037] 1, the system environment 100 includes a network 108. The network 108 enables communication between components of the system environment 100. In one or more embodiments, the network 108 includes the Internet or the World Wide Web. Furthermore, the network 108 may include various types of networks using various communication technologies and protocols, such as a corporate intranet, a virtual private network (VPN), a local area network (LAN), a wireless local network (WLAN), a cellular network, a wide area network (WAN), a metropolitan area network (MAN), or a combination of two or more such networks. Indeed, the server 104 and the client devices 106a-106n may communicate over the network 108 using various communication platforms and technologies suitable for transporting data and / or communication signals, including any known communication technologies, devices, media, and protocols that support data communication, examples of which are described with reference to FIG. 8.
[0038] 1 illustrates an example in which the server 104 and the client devices 106a-106n communicate over a network 108, the various components of the system environment 100 may alternatively communicate and / or interact via other methods (e.g., the server 104 and the client devices 106a-106n may communicate directly). Additionally, while FIG. 1 illustrates the password sharing system 102 implemented by certain components and / or devices within the system environment 100, the password sharing system 102 may be implemented in whole or in part by other computing devices and / or components within the system environment 100. For example, at least a portion of the password sharing system 102 may be implemented within one or more of the client devices 106a-106n.
[0039] As discussed above, the password sharing system 102 may utilize key exchange and key rotation associated with a shared folder to provide multiple client devices with secure access to the shared folder. Figures 2A-2B illustrate a diagram of a shared folder accessible from multiple client devices and multiple encryption keys associated with operations for securely sharing the contents of the shared folder across the multiple client devices. Specifically, Figure 2A illustrates an initial key exchange between multiple client devices, and Figure 2B illustrates a key rotation to a modified shared encryption key that is shared among the multiple client devices.
[0040] 2A illustrates an environment including a server 104, a first client device 200a, and a second client device 200b. In one or more embodiments, the server 104 includes a password sharing system 102 for managing shared folders associated with the first client device 200a and the second client device 200b. For example, the server 104 hosts the shared folders and provides access to the shared folders to the first client device 200a and the second client device.
[0041] According to one or more embodiments, the first client device 200a utilizes the client application 202a to create the shared folder 204. For example, the first client device 200a utilizes a content sharing application to send a request to the password sharing system 102 at the server 104 to create the shared folder 204 at the server 104 (e.g., based on being associated with an owner / administrator account for the shared folder 204). In connection with creating the shared folder 204, the first client device 200a may also indicate shared memberships associated with the shared folder 204, including the first client device 200a and the second client device 200b.
[0042] In one or more embodiments, the shared folder 204 includes a collection of passwords for sharing with the first client device 200a and the second client device 200b. For illustrative purposes, the shared folder 204 may include one or more passwords associated with one or more services. Additionally, as illustrated in FIG. 2A , the shared folder 204 may include one or more subfolders (e.g., the first subfolder 206a and the second subfolder 206b) that include different collections of passwords for sharing with different client devices. For example, the password sharing system 102 may establish separate access permissions for each client device for each subfolder in the shared folder 204 based on password permissions associated with the passwords.
[0043] As used herein, the term "password permissions" refers to designated access rights to a password by a user or user account. For example, password permissions may indicate whether a given account can view, use, or change a particular password for a service. Additionally, as used herein, the term "access permissions" refers to designated access rights to a folder by a user or user account. For example, access permissions may indicate an access control level assigned to a user account for a given folder or subfolder that contains a collection of passwords. In one or more embodiments, access permissions to a particular folder are based on password permissions corresponding to one or more passwords in the folder.
[0044] When the password sharing system 102 requests that the shared folder 204 be created, in some embodiments, the first client device 200a may first create the shared folder 204 and corresponding hierarchy locally on the first client device 200a. Additionally, the first client device 200a may store the collection of passwords in the shared folder 204 in the local storage of the client device 200a. The first client device 200a may then send a request to the password sharing system 102 to create the shared folder 204 with the corresponding hierarchy on the server 104 in preparation for delivering a payload corresponding to the shared folder 204 to the password sharing system 102.
[0045] In response to receiving the request to create a shared folder, the password sharing system 102 generates a shared folder 204 including a corresponding hierarchy at the server 104. Before receiving a payload for storage in the shared folder 204, the password sharing system 102 retrieves a public key set 208 including at least one public encryption key associated with the second client device 200b. For example, the password sharing system 102 retrieves the public encryption key associated with the second client device 200b from public encryption keys previously cached for client devices registered with the password sharing system 102. In some embodiments, the password sharing system 102 also retrieves the public encryption key associated with the first client device 200a for inclusion in the public key set 208. For example, the password sharing system 102 may retrieve public encryption keys associated with the private encryption keys (e.g., the first private encryption key 210a and the second private encryption key 210b) associated with the first client device 200a and the second client device 200b. The password sharing system 102 may then provide the public key collection 208 to the first client device 200a.
[0046] As further illustrated by FIG. 2A, the first client device 200a utilizes the shared encryption key 212 to encrypt a payload (e.g., a collection of passwords) associated with the shared folder 204. As used herein, the term "shared encryption key" (or "shared key") refers to an encryption key utilized to encrypt and / or decrypt a payload for a shared folder. For example, the shared encryption key includes a key that is accessible from multiple client devices to encrypt and decrypt a collection of passwords shared among the client devices. Additionally, as illustrated by FIG. 2A, the first client device 200a stores an encrypted version of the shared encryption key 212 (rather than an unencrypted version of the shared encryption key 212) along with the encrypted payload in the shared folder 204.
[0047] In one or more embodiments, as described above, the first client device 200a encrypts the shared encryption key 212 for storage in the shared folder 204 along with the encrypted payload. For example, the first client device 200a encrypts the shared encryption key 212 using the public key set 208 received from the password sharing system 102. Thus, the first client device 200a generates a list of encrypted versions of the shared encryption key 212 using (i) the public encryption key associated with the second client device 200b and (ii) any additional public encryption keys associated with any additional client devices that have membership access to the shared folder 204 via the password sharing system 102. By encrypting the shared encryption key 212 using the public key set 208, the first client device 200a prevents access to the shared encryption key 212 by client devices that do not have membership access to the shared folder 204. FIG. 2A illustrates an encrypted version of the shared encryption keys 212 stored with the payload of the shared folder 204 (eg, as a list of encrypted shared encryption keys).
[0048] Additionally, in one or more embodiments, the first client device 200a uploads an unencrypted version of the shared encryption key 212 in a user-specific key set maintained in the password sharing system 102 (e.g., for later use). For example, if the shared membership of the shared folder 204 does not include any other users, the first client device 200a encrypts the payload with the shared encryption key 212 but does not share the shared encryption key 212 with other client devices via the password sharing system 102. The first client device 200a may also store other keys in the user-specific key set that are not shared with other users via the password sharing system 102.
[0049] After encrypting the payload of the shared folder 204 with the shared encryption key 212 and encrypting the shared encryption key 212 with the public key set 208, the first client device 200a sends the encrypted payload and the encrypted shared encryption key 212 to the password sharing system 102 for storage in the shared folder 204 at the server 104. Furthermore, the password sharing system 102 provides the second client device 200b with access to the contents of the shared folder 204 via the client application 202b based on the second client device 200b having membership access to the shared folder 204. Thus, the second client device 200b (or other client device) may request to download (e.g., synchronize) the shared folder 204 from the server 104 to the second client device 200b (or a corresponding client device).
[0050] In response to receiving a request by the second client device 200b to download the shared folder 204, the password sharing system 102 may send the encrypted payload and the encrypted shared encryption key 212 to the second client device 200b. After receiving the encrypted payload and the encrypted shared encryption key 212 from the server 104, the second client device 200b may decrypt the shared encryption key 212 using the second private encryption key 210b. The second client device 200b may then decrypt the encrypted payload using the shared encryption key 212 to access the content (e.g., a collection of passwords) in the shared folder 204.
[0051] As previously discussed, the password sharing system 102 may also utilize different access control levels to restrict access to one or more passwords or groups of passwords to one or more client devices. For example, the password sharing system 102 may utilize a subfolder access control level to allow a first client device 200a to access a first subfolder 206a and a second subfolder 206b, while allowing a second client device 200b to access only the first subfolder 206a. Additionally, the password sharing system 102 may assign different types of access control levels to different client devices, for example, to allow a first client device 200a to read and write to any subfolder in the shared folder 204, while allowing a second client device 200b to only read the contents of the first subfolder 206a.
[0052] As illustrated in FIG. 2B, the password sharing system 102 also rotates a key associated with the shared folder 204. Specifically, the password sharing system 102 detects a key rotation event to rotate the shared encryption key 212 shown in FIG. 2A. As illustrated in FIG. 2B, the password sharing system 102 detects a key rotation event 218 that includes one of a number of possible events that cause the password sharing system 102 to initiate a process to change the shared encryption key 212. For example, as previously mentioned and illustrated in FIG. 2B, the key rotation event 218 may include, but is not limited to, a change in the shared membership of the shared folder 204, a request to rotate the shared encryption key 212, or a time threshold associated with the shared folder 204. Thus, the key rotation event 218 indicates that one or more client devices should no longer have access to the previous shared encryption key 212.
[0053] To rotate the shared encryption key 212, the password sharing system 102 retrieves the updated public key set 214 by requesting the public encryption keys from the client devices that have current membership access to the shared folder 204. For example, as illustrated in FIG. 2B, the password sharing system 102 determines that the first client device 200a and the second client device 200b have membership access to the shared folder 204 after the key rotation event 218 and obtains the public encryption keys from the first client device 200a and the second client device 200b. Further, the password sharing system 102 provides the updated public key set 214 to the first client device 200a and the second client device 200b.
[0054] In one or more embodiments, in response to receiving an indication of the key rotation event 218 and receiving the updated public key set 214 from the password sharing system 102, the first client device 200a and the second client device 200b race to generate a new shared encryption key. As illustrated in FIG. 2B, the second client device 200b is the first to generate the modified shared encryption key 216 (e.g., by rotating the shared encryption key 212 to the modified shared encryption key 216) and then use the modified shared encryption key 216 to re-encrypt the payload of the shared folder 204. The second client device 200b also uses the updated public key set 214 to encrypt the modified shared encryption key 216 (e.g., by generating multiple encrypted versions of the modified shared encryption key) and then provides the encrypted payload and the encrypted version of the modified shared encryption key 216 to the password sharing system 102 for storage in the shared folder 204. FIG. 2B shows that the shared folder structure 204 includes an encrypted version of the modified shared encryption key 216 .
[0055] As further illustrated in FIG. 2B , the password sharing system 102 synchronizes the contents of the shared folder 204 with the first client device 200a by sending a re-encrypted payload to the first client device 200a along with the modified shared encryption key 216. For example, the password sharing system 102 may synchronize the contents of the shared folder 204 with the first client device 200a in response to receiving a request from the first client device 200a to synchronize the shared folder 204. After receiving the re-encrypted payload and the modified shared encryption key 216 (encrypted using the updated public key set 214), the first client device 200a may decrypt the modified shared encryption key 216 using the first private encryption key 210a. The first client device 200a may also decrypt the encrypted payload using the modified shared encryption key 216 and then access the contents of the shared folder 204.
[0056] 3A-3B illustrate a flowchart of an operation for sharing a set of passwords across multiple client devices. In particular, as illustrated in FIGURES 3A-3B, a server 104 including a password sharing system 102 may communicate with a first client device 300a and a second client device 300b to share a set of passwords. In particular, to facilitate such communication and password sharing, the first client device 300a includes a first client application 302a and the second client device 300b includes a second client application 302b.
[0057] As illustrated in FIG. 3A, the first client device 300a begins the process of sharing a set of passwords with the second client device 300b by performing an operation 304 of selecting a set of passwords. For example, the first client device 300a receives an input by a first user associated with the first client device 300a to share a set of passwords with one or more other users. The first client device 300a then determines one or more passwords associated with one or more services to share with the one or more other users. The first client device 300a then performs an operation 306 of generating a folder on the first client device 300a. Illustratively, the first client device 300a generates a folder for storing the selected set of passwords on a local storage of the first client device 300a or in a virtual storage (e.g., temporary storage) that indicates how the set of passwords is stored on the server 104. Thus, the first client device 300a may set up a folder hierarchy with any number of subfolders to store collections of passwords within the created folders.
[0058] As further described in FIG. 3A, the first client device 300a performs an operation 308 to share a folder with one or more additional client devices. In one or more embodiments, the first client device 300a is associated with an account in a content management system (e.g., the content management system 110 of FIG. 1) that includes the password sharing system 102. A user of the account may log into the account in a first client application 302a at the first client device 300a and then cause the first client device 300a to access digital content from the server 104, store digital content on the server 104, and / or share digital content with one or more other accounts via the server 104. For example, the first client device 300a may send an indication of one or more other accounts to the password sharing system 102 to share a folder with one or more additional client devices associated with the one or more other accounts (e.g., a second client device 300b associated with the additional accounts).
[0059] In one or more embodiments, the password sharing system 102 provides an application programming interface ("API") through which client devices send commands to the password sharing system 102 to cause the password sharing system 102 to perform various operations. For example, the password sharing system 102 provides an API for synchronizing data (e.g., passwords) between the client devices and the server 104. Illustratively, the API for synchronizing data may include multiple API calls for performing functions associated with various operations (e.g., list, download, upload operations). Thus, in one or more embodiments, the first client device 300a shares a folder via the password sharing system 102 by issuing a "share folder" API call to the password sharing system 102.
[0060] As further illustrated in FIG. 3A , after the first client device 300a shares the folder, the password sharing system 102 performs an operation 310 of sending a folder identifier ("ID") to the first client device 300a in response to the first client device 300a sharing the folder. For example, the password sharing system 102 may generate a folder on the server 104 that mirrors the structure of the folder on the first client device 300a. Specifically, the folder generated on the server 104 may be an empty folder that serves as a placeholder for receiving content from the first client device 300a for storage in the folder. Alternatively, the password sharing system 102 generates a folder on the server 104 in response to a request via a web interface to generate a new folder structure (e.g., a folder structure that does not exist on the local storage of the first client device 300a). The password sharing system 102 may then determine a folder ID that corresponds to the created folder (e.g., the root folder) on the server 104 and return the folder ID (e.g., “share_folder_ID:1”) to the first client device 300a.
[0061] 3A , in response to receiving the folder ID indicating that the password sharing system 102 has created a shared folder at the server 104, the first client device 300a performs operation 312 to request a public key from the password sharing system 102. For example, the first client device 300a may send a request (e.g., a “get public key” API call) to the password sharing system 102 to provide one or more public keys to use in preparing to upload the contents of the folder to the password sharing system 102.
[0062] In one or more embodiments, in response to a request for the public key from the first client device 300a, the password sharing system 102 may identify one or more additional client devices that have membership access to the shared folder. For example, the password sharing system 102 may maintain a shared membership of the folder that indicates one or more accounts that have membership access to the folder. Further, the password sharing system 102 may identify the one or more additional client devices by determining one or more client devices that are associated with (e.g., registered with) one or more accounts that have membership access to the folder.
[0063] As further described in FIG. 3A, the password sharing system 102 may optionally perform an operation 314 of not returning the public key to the first client device 300a. In particular, the password sharing system 102 may determine that there are no additional accounts with shared membership in the folder (i.e., the folder's owner account has not shared the folder with other accounts). The password sharing system 102 may determine that the folder is not associated with any public encryption key based on the folder having no additional accounts associated with shared membership in the folder. Thus, in such a case, the password sharing system 102 may send a message or signal to the first client device 300a to indicate that the password sharing system 102 does not have a public encryption key for the folder based on the fact that no additional client devices are associated with shared membership for the folder.
[0064] As also illustrated in FIG. 3A, the first client device 300a optionally performs an operation 316 of adding a member to a folder. Specifically, the first client device 300a may add one or more accounts to a shared membership associated with the folder in response to user input to add one or more users to the folder via the first client application 302a. The first client device 300a then sends an indication of the added member (e.g., an “add member” API call) to the password sharing system 102 by providing the password sharing system 102 with one or more account identifiers, user identifiers, or device-specific identifiers associated with the added members. Although FIG. 3A illustrates a single operation for adding a member to a folder, the first client device 300a may add a member to a folder at any time after initially creating the shared folder (e.g., to add a member to a previously created / existing shared folder).
[0065] As further described in FIG. 3A , the password sharing system 102 performs an operation 318 of obtaining a public key associated with the second client device 300b. For example, the password sharing system 102 determines that the second client device 300b is associated with a user's account in the content management system 110. In one or more embodiments, the password sharing system 102 obtains the public encryption key associated with the second client device 300b based on the account having membership access to the folder according to the shared membership of the folder. In some cases, the password sharing system 102 previously received the public encryption key from the second client device 300b upon registration of the second client device 300b with the password sharing system 102. Alternatively, the password sharing system 102 may obtain the public encryption key at any time after the second client device 300b is registered with the password sharing system 102 (e.g., when adding the user's account to the shared membership of the shared folder).
[0066] As described above, after the first client device 300a shares a folder, it may provide a shared membership to the password sharing system 102. Although such membership may be shared or extended, in one or more embodiments, the password sharing system 102 accesses a previously existing shared membership to identify the second client device 300b (e.g., based on the shared folder being associated with one or more existing shared folders having the same shared membership).
[0067] 3A, the second client device 300b performs an operation 320 of transmitting a public key to the password sharing system 102. In one or more embodiments, the second client device 300b obtains a public encryption key corresponding to a public-private key pair associated with the second client device 300b. For example, the second client device 300b may generate a public-private key pair or access an existing public-private key pair when registering with the password sharing system 102 and transmit the public encryption key to the password sharing system 102 upon registration while maintaining the private encryption key on the second client device 300b.
[0068] As further described in FIG. 3A, after receiving the public key, the password sharing system 102 performs an operation 320b to transmit the public key to the first client device 300a. For example, the password sharing system 102 determines a public key set that includes the public encryption key retrieved from the second client device 300b. In one or more embodiments, the password sharing system 102 also retrieves one or more additional public encryption keys from one or more additional client devices that have membership access to the folder. The password sharing system 102 may include the one or more additional public encryption keys in the public key set along with the public encryption key from the second client device 300b. The password sharing system 102 then transmits the public key set to the first client device 300a.
[0069] As illustrated in FIG. 3B, the first client device 300a also performs an operation 322 of encrypting the set of passwords with a shared key. In one or more embodiments, the first client device 300a generates a shared encryption key for encrypting a payload associated with the folder. The first client device 300a then utilizes the shared encryption key to encrypt the payload (e.g., the set of passwords according to the hierarchy of the folder), resulting in an encrypted payload (e.g., a payload that is inaccessible without the shared encryption key). In some embodiments, the first client device 300a encrypts the payload before receiving the set of public keys from the password sharing system 102. In an alternative embodiment, the first client device 300a encrypts the payload after receiving the set of public keys from the password sharing system 102.
[0070] As further illustrated in FIG. 3B, the first client device 300a performs an operation 324 of encrypting the shared key with the public key set. In particular, after encrypting the payload using the shared key, the first client device 300a then uses the public key set to encrypt the shared key. For example, the first client device 300a generates an encrypted version of the shared key by using a public key associated with the second client device 300b. In addition, the first client device 300a may generate a separate encrypted version of the shared key by using one or more additional public keys included in the public key set.
[0071] After encrypting the shared key with the set of public keys, the first client device 300a performs operation 326 of sending the encrypted set of passwords and the encrypted shared key to the password sharing system 102. Specifically, after encrypting the shared key used by the first client device 300a to encrypt the payload associated with the folder, the first client device 300a sends the payload and an encrypted version of the shared key to the password sharing system 102 for storage in the folder. For example, the first client device 300a uploads the encrypted payload and the encrypted shared key to a location on the server 104 that corresponds to the folder using the folder ID. The password sharing system 102 may then store the encrypted payload and the encrypted shared key in the folder.
[0072] As further described in FIG. 3B , when the password sharing system 102 receives the encrypted set of passwords and the encrypted shared encryption key, the second client device 300b performs an operation 328 of requesting the folder from the password sharing system 102. In one or more embodiments, after the first client device 300a uploads the contents of the folder to the password sharing system 102, any client device with current membership access to the folder may request access to the folder. Thus, the second client device 300b may send a request to the password sharing system 102 to provide the contents of the folder to the second client device 300b (e.g., a “list folders” API call that lists the most recent changes to the passwords in the shared folder). In one or more embodiments, the “list folders” API call returns a snapshot of all shared folders to which the second client device 300b has access.
[0073] In some cases, as illustrated in FIG. 3B, the password sharing system 102 may optionally perform a device verification operation 330. For example, in response to determining that the request for the folder is unverified (e.g., the request for the folder is a first request made by the second client device 300b to the password sharing system 102), the password sharing system 102 may verify the identity of the second client device 300b. To illustrate, the password sharing system 102 may obtain a device-specific identifier for the second client device 300b (e.g., an identifier indicative of a particular instance of the second client application 302b) and verify that the device identifier is associated with a registered account that has membership access to the folder. Alternatively, the password sharing system 102 may verify the identifier of the second client device 300b via an email identification associated with the account of the second client device 300b. In one or more additional embodiments, the password sharing system 102 may determine that the second client device 300b is not associated with an existing account and then request the user associated with the second client device 300b to establish an account for verification.
[0074] Regardless of whether the password sharing system 102 validates the device after receiving a request for the contents of the folder from the second client device 300b, the password sharing system 102 performs an operation 332 of sending the encrypted set of passwords and the encrypted shared key received from the first client device 300a to the second client device 300b. In one or more embodiments, in response to a request by the second client device 300b for the folder (e.g., a "download" API call), the password sharing system 102 determines the (encrypted) payload associated with the folder and then sends the payload to the second client device 300b. In addition, the password sharing system 102 sends the encrypted shared encryption key stored in the folder along with the payload to the second client device 300b (e.g., without accessing the contents of the shared folder, including the encrypted shared encryption key).
[0075] 3B, the second client device 300b performs an operation 334 of decrypting the encrypted shared key. Specifically, after the second client device 300b receives the encrypted payload and the encrypted shared key from the password sharing system 102 for the folder, the second client device 300b uses a private encryption key to decrypt the shared encryption key. More specifically, the second client device 300b uses a private encryption key from a public-private key pair associated with the public encryption key that the password sharing system 102 previously retrieved from the second client device 300b to decrypt the shared encryption key.
[0076] As finally shown in FIG. 3B, the second client device 300b performs an operation 336 of decrypting the set of passwords. For example, after the second client device 300b decrypts the shared encryption key, the second client device 300b uses the shared encryption key to decrypt the encrypted payload received from the password sharing system 102. This allows the second client device 300b to decrypt the contents of the folder shared by the first client device 300a. The second client device 300b may then access the contents of the folder to access one or more passwords from the set of passwords.
[0077] In one or more embodiments, as previously described, the password sharing system 102 may utilize various access permissions to restrict the access of the second client device 300b. For example, the password sharing system 102 may assign access control levels to one or more subfolders in a folder to allow the second client device 300b to read and / or write the corresponding subfolder. In addition, the password sharing system 102 may utilize access permissions to restrict the second client device 300b's access to one or more other subfolders in the folder. Thus, after the second client device 300b decrypts the payload of the folder, the password sharing system 102 may utilize the access permissions to allow or restrict different levels of access to the second client device 300b to one or more passwords of the set of passwords according to the established access control.
[0078] As previously discussed, the password sharing system 102 may provide an API that a client device may access to perform various operations associated with accessing a shared folder that includes a collection of passwords. In one or more embodiments, the API includes listing (e.g., "folder list" and "long poll"), download, and upload operations. The password sharing system 102 may modify existing APIs to include additional calls to utilize the API for password namespaces (e.g., unmounted spaces) when modifying the share membership associated with a collection of shared passwords. Additionally, the password sharing system 102 may modify an identifier value in an account's password namespace, thus effectively committing a new entry without a new entry ever existing. For example, the password sharing system 102 may include a set of API calls to return changes to the collection of passwords in a shared folder and / or changes to the share state for validation with the shared folder (e.g., "folder list", "continue folder list"), to obtain the latest cursor (e.g., "get latest cursor"), or to obtain an existing long poll for the shared folder (e.g., "long poll").
[0079] Additionally, in one or more embodiments, the password sharing system 102 restricts API interaction to one or more specific client applications on a user client device. For example, a client application accessing the password sharing system 102 may include a password storage application for accessing multiple passwords or credentials associated with multiple different services within a single application. In some examples, the password application may interact with other client applications (e.g., a web browser) to automatically populate credential fields within the other client applications. Thus, the password sharing system 102 may provide improved security by blocking API access to unauthorized client applications.
[0080] In addition to the key exchange described above, in one or more additional embodiments, the password sharing system 102 utilizes a protocol for persisting the intent of the key transfer and the result of the key transfer in association with the key exchange for the shared folder containing the password. In particular, one or more devices having access to the shared folder may not always be available. Thus, transferring the key based on notification alone may not be reliable. To overcome such shortcomings, the password sharing system 102 maintains the intent of the key transfer on the server 104 in association with the operation of sending the public encryption key to the client device. When the client device issues a "folder list" call, the password sharing system 102 may inquire the number of pending key requests for the shared encryption key for the shared folder on the password namespace. The password sharing system 102 then passes the public encryption key as part of the sharing state of the client device. Furthermore, the result of the key transfer is embodied in the payload received from the client device.
[0081] As previously discussed, the password sharing system 102 may rotate a key in connection with sharing a password among multiple client devices. Figures 4A-4B show a flowchart for the password sharing system 102 on the server 104, involving a first client device 400a and a second client device 400b, to rotate a shared encryption key associated with a shared folder. In particular, to facilitate the rotation of the shared encryption key, the first client device 400a includes a first client application 402a and the second client device 400b includes a second client application 402b.
[0082] As illustrated in FIG. 4A, the first client device 400a performs operation 404 of sending a shared folder to the password sharing system 102. In one or more embodiments, an initial client device (e.g., the first client device 400a) creates a shared folder for sharing with one or more other client devices. For example, the shared folder may be associated with a shared membership indicating one or more accounts that have access to the shared folder. The password sharing system 102 may determine a client device (e.g., the second client device 300b) associated with an account that has access to the shared folder. As described above with respect to FIGS. 3A-3B, the password sharing system 102 receives an encrypted payload and an encrypted shared encryption key from the client device in association with the shared folder.
[0083] As further described in FIG. 4A, the password sharing system 102 performs operation 406 of determining a shared key version. In one or more embodiments, the password sharing system 102 stores a version number for the shared encryption key associated with the shared folder. For example, in response to a first request to share / create a folder, the password sharing system 102 may store an identifier (e.g., "key_version=1") indicating that the shared encryption key is a first version. Additionally, if the shared encryption key has been previously updated / rotated, the version number reflects the current version of the shared encryption key.
[0084] After determining the shared key version, the password sharing system 102 performs operations 408a-408b to transmit the shared key version to the first client device 400a and the second client device 400b. Specifically, after the password sharing system 102 creates a shared folder associated with the shared encryption key, the password sharing system 102 may transmit a version number of the shared encryption key to the client devices that have membership access to the shared folder. For example, the password sharing system 102 transmits the version number of the shared encryption key to the client devices to enable the client devices to check the accuracy of synchronization between the individual client devices and the stored version on the server 104.
[0085] As described above, various key rotation events may trigger the password sharing system 102 to rotate the shared encryption key. As illustrated in FIG 4A, the password sharing system 102 may perform an operation 410 to detect a key rotation event. For example, the password sharing system 102 may detect an event indicating that the shared encryption key should be rotated such that the old key cannot decrypt the payload of a shared folder.
[0086] To illustrate a key rotation event, as previously described, the password sharing system 102 may detect that the shared membership associated with a shared folder has changed (e.g., by removing access rights to one or more user accounts and / or client devices). In another example, the password sharing system 102 may receive a request to rotate the shared encryption key (e.g., a request from a client device of the owner of the shared folder or a request by a client device indicating that the shared encryption key has been corrupted or compromised). Alternatively, the password sharing system 102 may detect that a time threshold associated with the current shared encryption key has been reached. In one or more additional embodiments, only the password sharing system 102 may detect a key rotation event, such that the password sharing system 102 is the only source that may initiate a key rotation operation at one or more client devices.
[0087] As further described in FIG. 4A, the password sharing system 102 performs an increment shared key version operation 412. In particular, the password sharing system 102 increments the version number stored for the shared encryption key associated with the shared folder. Illustratively, in response to detecting a key rotation event, the password sharing system 102 increments the version number from "key_version=1" to "key_version=2". The password sharing system then stores the new version number in association with the shared folder and notifies client devices that have membership access to the shared folder. In one or more embodiments, the password sharing system 102 increments the version number monotonically.
[0088] In one or more additional embodiments, the password sharing system 102 may use the following formula: K new =max(K old+1,Now().milliseconds), where K represents the shared encryption key. In particular, the password sharing system 102 increments the old / previous key version number value (e.g., "K old +1) to a current time value (e.g., “Now().milliseconds”) that the password sharing system 102 retrieves. The password sharing system 102 then selects the maximum of the two values and creates a new key version number K new may be set as the maximum value.
[0089] As further illustrated in FIG. 4A, the password sharing system 102 performs operations 414a-414b to send the rotated key version to the first client device 400a and the second client device 400b. Specifically, the password sharing system 102 sends an updated version number for the shared encryption key to each of the client devices that have membership access to the shared folder. For example, in response to incrementing the version number of the shared encryption key from "key_version=1" to "key_version=2", the password sharing system 102 sends "key_version=2" to all client devices that have current membership access to the shared folder. In one or more embodiments, the password sharing system 102 sends the rotated version number to the client devices in response to receiving a "folder listing" request from the client device (e.g., based on notifying the client device of a key rotation event). By sending the updated version number to the client devices, the password sharing system 102 may initiate a race among the client devices to generate a new shared encryption key and commit a new payload for the shared folder.
[0090] 4A, as part of the process of generating a new shared encryption key, the first client device 400a and the second client device 400b perform operations 416a-416b to request a public key from the password sharing system 102. In one or more embodiments, in response to receiving the rotated version number of the shared encryption key from the password sharing system 102, each client device performs a check of the version number against the version number stored on the corresponding client device. Based on a determination that the version numbers do not match, the client device initiates the process to rotate the shared encryption key by requesting an updated set of public keys from the password sharing system 102.
[0091] As further illustrated in FIG. 4A, the password sharing system 102 performs operations 418a-418b to send public keys to the first client device 400a and the second client device 400b. For example, the password sharing system 102 retrieves an updated public key set including public encryption keys for client devices that have current membership access to the shared folder. Explained, the password sharing system 102 accesses a shared membership associated with the shared folder to identify one or more accounts and / or one or more client devices that have access to the shared folder. The password sharing system 102 then requests a public encryption key from each of the identified client devices and generates an updated public key set including only the retrieved public encryption keys. By updating the public key set based on the current shared membership, the password sharing system 102 excludes public encryption keys for client devices that no longer have current membership access to the shared folder. The password sharing system 102 then transmits the updated set of public keys to each of the identified client devices (eg, the first client device 400a and the second client device 400b).
[0092] By providing the rotated key version to the client devices and further transmitting the public key in response to a corresponding request, the password sharing system 102 causes the client devices to begin a race to generate a new shared encryption key and commit a new payload for the shared folder. Thus, each client device performs multiple operations to generate a new shared encryption key and then attempts to commit a new payload for the shared folder. Although FIGS. 4A-4B show a single client device (e.g., the second client device 400b) performing the operations associated with generating a new shared encryption key and committing a new payload for the shared folder, each of the client devices that have membership access to the shared folder may also perform the operations described below.
[0093] As further described in FIG. 4A , for example, the second client device 400b performs operation 420 of encrypting the payload with a modified shared key. In particular, the second client device 400b generates a modified shared encryption key (e.g., by generating a new shared encryption key). The second client device 400b may then use the modified shared encryption key to re-encrypt the contents of the shared folder. For example, if the collection of passwords in the shared folder is currently encrypted at the second client device 400b, the second client device 400b may decrypt the collection of passwords using a private encryption key associated with the second client device 400b. The second client device 400b may then re-encrypt the collection of passwords using the modified shared encryption key.
[0094] In one or more additional embodiments, the second client device 400b modifies the set of passwords after decrypting the set of passwords. For example, the second client device 400b can modify a password stored in the set of passwords (e.g., based on changing a password at a service), add a new password to the set of passwords, or remove one or more passwords from the set of passwords. Thus, the second client device 400b can modify the set of passwords by modifying an existing password or adding a new password (e.g., based on permissions granted to the second client device 400b). The second client device 400b can then encrypt the updated set of passwords using the modified shared encryption key. Thus, the updated encrypted payload can include the modified or new set of passwords.
[0095] 4B, the second client device 400b performs operation 422 of encrypting the modified shared key with a public key. Specifically, the second client device 400b uses the updated set of public keys received from the password sharing system 102 to encrypt the modified shared encryption key. For example, the second client device 400b uses each public encryption key associated with each client device that has current membership access to the shared folder to generate multiple encrypted versions of the modified shared encryption key.
[0096] 4B, the second client device 400b performs operation 424 of sending the updated encrypted payload and the encrypted modified shared key to the password sharing system 102. For example, the second client device 400b sends the updated encrypted payload along with multiple encrypted versions of the modified shared encryption key for storage in a shared folder at the server 104. In one or more embodiments, the second client device 400b also indicates a version number of the shared key associated with the updated encrypted payload and the encrypted modified shared encryption key.
[0097] After receiving the updated encrypted payload, the password sharing system 102 performs operation 426 of determining whether a conflict exists. Specifically, the password sharing system 102 may determine whether the data received from the second client device 400b conflicts with the payload stored in the shared folder. For example, the password sharing system 102 may utilize a version number of a shared encryption key associated with the received data matching a version number stored in association with the shared folder. If the version numbers match, the password sharing system 102 determines that the data is valid. Alternatively, if the version numbers do not match, the password sharing system 102 determines that a conflict exists and that the data is not valid. As described further below, based on determining that the version of the shared encryption key conflicts with a changed (or rotated) shared encryption key, the password sharing system 102 rejects the version of the shared encryption key.
[0098] As illustrated in FIG. 4B, the password sharing system 102 performs an operation 428 of determining an initiator for the shared folder. In one or more embodiments, in response to determining that the data received from the second client device 200b is valid, the password sharing system 102 may establish that the second client device 200b is the initiator device. As used herein, the term "initiator device" refers to a computing device that successfully rotates a shared encryption key by generating a new shared encryption key and committing the payload to the shared folder. Thus, the password sharing system 102 commits the received data (e.g., the updated encrypted payload and the encrypted modified shared encryption key) to the shared folder. In one or more embodiments, the password sharing system 102 commits the payload only after verifying the revision number associated with the encrypted payload (e.g., "rev3" is correct).
[0099] Additionally, the password sharing system 102 may determine that other client devices that have membership access to the shared folder are follower devices. As used herein, the term “follower device” refers to a computing device that receives a new shared encryption key generated by another client device. For example, the password sharing system 102 may determine that any other client device that attempts to commit a payload to the shared folder after the password sharing system 102 has already committed a payload to the shared folder is a follower device. In addition, in response to determining that there is a conflict between the updated encrypted payloads from the client devices (e.g., based on mismatched version numbers of the shared encryption key), the password sharing system 102 may reject (e.g., abort) the payload from the follower device and indicate to the follower device that the payload was rejected. In some embodiments, the initiator device and follower device may change from one key rotation event to another depending on which client device wins the race to commit for each key rotation event.
[0100] 4B, the password sharing system 102 performs an operation 430 of sending the updated encrypted payload and the encrypted modified shared key to the first client device 400a. For example, in response to receiving a request by the first client device 400a to access the shared folder (e.g., via a "list folder" API call), the password sharing system 102 may send a committed payload (e.g., the updated encrypted payload along with the modified shared encryption key received from the second client device 400b) to the first client device 400a. Because the password sharing system 102 has committed the data received from the second client device 400b to the shared folder, the data that the password sharing system 102 sends to the first client device 400a includes the re-encrypted payload and the modified shared encryption key encrypted to match the rotated version number of the shared encryption key.
[0101] After receiving the updated encrypted payload, the first client device 400a performs an operation 432 of decrypting the encrypted modified shared key. Specifically, after the first client device 400a receives the updated encrypted payload and the encrypted modified shared key from the password sharing system 102 for the shared folder, the first client device 400a uses a private encryption key to decrypt the modified shared encryption key generated by the second client device 400b. More specifically, the first client device 400a uses a private encryption key from a public-private key pair associated with a public encryption key in the updated public key set that the password sharing system 102 previously retrieved from the first client device 400a to decrypt the modified shared encryption key.
[0102] As finally illustrated by FIG. 4B, the first client device 400a performs the operation 434 of decrypting the payload. For example, after decrypting the modified shared encryption key, the first client device 400a uses the modified shared encryption key to decrypt the encrypted payload received from the password sharing system 102. This allows the first client device 400a to decrypt the contents of the shared folder encrypted by the second client device 400b. The first client device 400a may then access the contents of the shared folder (e.g., access one or more passwords stored in the shared folder).
[0103] In one or more embodiments, the first client device 400a also verifies that the version number of the shared encryption key stored on the first client device 400a matches the version number of the shared encryption key sent with the payload. For example, the first client device 400a may compare the stored version number with the received version number. In one or more embodiments, if the version numbers do not match, the first client device 400a issues a new request to the password sharing system 102 to synchronize the shared folder to ensure that the first client device 400a has the latest content for the shared folder.
[0104] As described above in connection with FIGS. 4A-4B, the password sharing system 102 provides key rotation of a shared encryption key for encrypting a shared folder. In one or more embodiments, a client device rotates the key (e.g., in response to a key rotation start notification from the password sharing system 102) by first issuing a “list folders” API call to the password sharing system 102 to obtain metadata changes for the shared folder. The metadata includes the current key version K for the shared encryption key. S The client device may include a key version K. SThe key version K stored on the client device C For example, 1) the client device may compare K S >K C If the client device determines that the key is S =K C If so, then the client device determines that the key versions match and the client device proceeds as usual; and 3) the client device S <K C If so, the client device waits until the next "list folder" call, which may occur if the payload has been committed but a long poll has not been triggered to be returned. Thus, the client device determines which action to take based on a comparison between the current key version for the shared encryption key and the shared encryption key stored on the client device.
[0105] In response to a decision to initiate key rotation, the client device may request a public key (PK) for each current member of the shared folder. 1 , P.K. 2 , …, P.K. n The client device may call a “Get Public Key” API call to obtain a new shared encryption key (e.g., a new folder key for a shared folder) K folder The client device may then encrypt the folder key with the public key of each member client device (DK n =ENC(K private ,K folder ,PK n In addition to this, the client device uploads the folder key to its own private encrypted key set and 1 , D.K. 2 , …, D.K. n and (K folderThe client device uploads the folder key to the shared folder with a payload that has been encrypted with the password sharing system 102. The client device that uploads the folder key becomes the initiator device. If the upload fails due to a conflict, meaning that a new version of the payload already exists on the password sharing system 102, the client device falls back to issuing a "list folders" call.
[0106] In response to determining that the client device is a follower device (i.e., the key versions match), such a determination may indicate one of two things: 1) the existing shared encryption key can decrypt the payload, or 2) the existing key cannot decrypt the payload and a key rotation has just occurred. Based on the second possibility, the client device attempts to find its own device-unique identifier (e.g., an identifier indicating a particular instance of the client application) in the payload, decrypt it, and then remove it. If not, the client device issues a new "request shared key" call to request a new key from the password sharing system 102.
[0107] As described above, in one or more embodiments, the password sharing system 102 provides shared passwords for users to access via various client applications. FIGS. 5A-5B illustrate graphical user interfaces for utilizing a client device 500 to access a collection of passwords for logging a user into services. For example, FIGS. 5A-5B illustrate the password sharing system 102 providing a client device 500 with access to a shared password for an auto-populated request for credentials to access an account at one or more services within a client application 502 on the client device 500.
[0108] As illustrated in FIG. 5A, the client device 500 includes a user interface for a client application 502. According to one or more embodiments, the client application 502 includes instructions that (when executed) cause the client device 500 to display content associated with a service for which a user associated with the client device 500 has an account. For example, as illustrated in FIG. 5A, the client device 500 provides a user interface within the client application 502 for logging a user into an account using login credentials associated with the account. Illustratively, the client application 502 may include an application (e.g., a proprietary application) associated with a service, such as a social networking application or a banking application. Alternatively, the client application 502 may include a web browser that displays websites associated with multiple different services.
[0109] As illustrated in Figure 5A, client device 500 displays interactive elements within a user interface of client application 502 for providing login credentials to log into an account. For example, the user interface may include a username field 504 and a password field 506 for entering a username and password, respectively, associated with the account. Although Figure 5A shows client device 500 displaying username field 504 and password field 506, the service may require different login credentials or other secure information, such as, but not limited to, a personal identification number, the user's full name, address, or a security response.
[0110] In one or more embodiments, a client device 500 associated with the password sharing system 102 automatically detects when the client device 500 displays an element (e.g., within a client application 502) for entering credentials. To explain, a client application associated with the password sharing system 102 may run in the background on the client device to detect an opportunity to enter credentials. For example, the client application associated with the password sharing system 102 may detect an opportunity to enter credentials based on display information or metadata information associated with a user interface of the client application 502.
[0111] In response to detecting that the client device 500 has displayed an element for entering credentials, the password sharing system 102 may provide (e.g., via an associated client application) a prompt associated with the password sharing system 102. For example, as illustrated in FIG. 5A , the client device 500 may display a password manager overlay 508 within the client application 502 for accessing information from the password sharing system 102. To illustrate, the client device 500 may display the password manager overlay 508 near the detected field (e.g., below the username field 504) so that a user can easily find the prompt.
[0112] In one or more embodiments, the password manager overlay 508 is or includes a selectable element for accessing the password sharing system 102 from within the client application 502. Specifically, in response to a selection of the selectable element, the client device 500 may communicate with the password sharing system 102 to obtain information associated with the user's account at the password sharing system 102. More specifically, the client device 500 may access a shared folder that includes a collection of passwords accessible to the user. For example, the client device 500 may request a payload for the shared folder from the password sharing system 102, decrypt a shared encryption key included with the payload (e.g., using a private encryption key stored on the client device 500), and decrypt the payload (e.g., the collection of passwords) using the shared encryption key. In one or more alternative embodiments, the client device 500 may maintain the collection of passwords in the shared folder on the client device 500 (e.g., by periodically requesting the payload for the shared folder from the password sharing system 102) to more quickly access the passwords in the shared folder.
[0113] 5B, after decrypting and accessing the contents of the shared folder, the client device 500 displays the data associated with the shared password. For example, as shown, the client device 500 may display an account overlay 510 that includes multiple accounts for which the shared folder contains passwords. To illustrate, if the user's account includes membership access to multiple passwords associated with multiple accounts, the client device 500 displays the corresponding accounts in the account overlay 510. In addition, if the shared folder includes one or more passwords that the user's account is not allowed to access (e.g., based on a shared membership or access control level associated with a corresponding subfolder in the shared folder), the client device 500 does not display the accounts that correspond to those passwords.
[0114] In one or more embodiments, in response to a user input selecting one of the accounts displayed within the account overlay 510, the client device 500 retrieves the credentials associated with the selected account. For example, if a user selects an element corresponding to “Account 1” via the account overlay 510, the client device 500 associated with the password sharing system 102 retrieves the username and password associated with “Account 1”. The client application associated with the password sharing system 102 then auto-populates (e.g., automatically populates) the username field 504 and the password field 506 with the corresponding username and password, respectively. The client device 500 may also present a login element 512 for logging into a service based on the automatically entered credentials. Thus, the password sharing system 102 provides a tool (e.g., via a client application associated with the password sharing system 102) to access and utilize password information stored in a shared folder on the fly within other client applications on the client device 500.
[0115] FIG. 6 shows a detailed schematic diagram of an embodiment of the password sharing system 102 described above. As shown, the password sharing system 102 is implemented in a content management system 110 on a computing device 600 (e.g., a client device and / or server as described in FIG. 1 and further described below in connection with FIG. 8). In addition, the password sharing system 102 may include, but is not limited to, a password manager 602, a shared folder manager 604, a shared key manager 606, a public key manager 608, and a data storage manager 610. In one or more embodiments, the password sharing system 102 is implemented on any number of computing devices. For example, the password sharing system 102 may be implemented in a distributed system of server devices for managing digital content. The password sharing system 102 may also be implemented in one or more additional systems. Alternatively, the password sharing system 102 may be implemented at least partially on a client device (e.g., a user client device).
[0116] In one or more embodiments, each of the components of the password sharing system 102 communicates with the other components using any suitable communication technology. In addition, the components of the password sharing system 102 may communicate with one or more other devices, including other computing devices of a user, a server device (e.g., a cloud storage device), a license server, or other devices / systems. Although the components of the password sharing system 102 are shown as being separate in FIG. 6, it will be appreciated that any of the subcomponents may be combined into fewer components, such as a single component, or may be divided into more components as may serve the role of a particular implementation. Additionally, although the components of FIG. 6 are described in conjunction with the password sharing system 102, at least some of the components for performing operations in conjunction with the password sharing system 102 described herein may be implemented on other devices in the environment.
[0117] The components of the password sharing system 102 may include software, hardware, or both. For example, the components of the password sharing system 102 include one or more instructions stored on a computer-readable storage medium and executable by a processor of one or more computing devices (e.g., computing device 600). When executed by one or more processors, the computer-executable instructions of the password sharing system 102 cause the computing device 600 to perform the operations described herein. Alternatively, the components of the password sharing system 102 include hardware, such as a dedicated processing device for performing a given function or group of functions. Additionally or alternatively, the components of the password sharing system 102 include a combination of computer-executable instructions and hardware.
[0118] Additionally, components of the password sharing system 102 that perform the functions described herein with respect to the password sharing system 102 may be implemented, for example, as part of a stand-alone application, as a module of an application, as a plug-in for an application, as library function(s) that may be called by other applications, and / or as a cloud computing model. Thus, at least some of the components of the password sharing system 102 may be implemented as part of a stand-alone application on a personal computing device or a mobile device. Alternatively or additionally, components of the password sharing system 102 may be implemented in any application that provides digital content management or password management.
[0119] As described above, the password sharing system 102 includes a password manager 602. In one or more embodiments, the password manager 602 manages one or more passwords associated with one or more accounts of a user. For example, the password manager 602 may manage login credentials or secure information for logging one or more users into one or more services associated with the user's one or more accounts. In addition, the password manager 602 may manage a subset of passwords, such as by enforcing password permissions for a user.
[0120] The password sharing system 102 may also include a shared folder manager 604. For example, the shared folder manager 604 may manage the folder structure or hierarchy of the shared folder (e.g., a root folder and one or more subfolders). In addition, the shared folder manager 604 may also manage the content of the shared folder and any subfolders. For example, the shared folder manager 604 may manage the location of data (e.g., encrypted or unencrypted) within the shared folder on one or more devices that have access to the shared folder.
[0121] In one or more embodiments, the shared folder manager 604 also manages the share memberships associated with the shared folders. For example, the shared folder manager 604 may manage which user accounts and / or client devices have access to the shared folders based on the share memberships for the shared folders. The shared folder manager 604 may also manage the access permissions (including the access control levels) to the shared folders and any subfolders within the shared folders.
[0122] The shared folder manager 604 may also manage API calls and operations by the server and / or client devices related to the shared folders. Illustratively, the shared folder manager 604 may manage requests to access content in a shared folder. The shared folder manager 604 may also manage requests to store / commit payloads to the shared folders from one or more client devices.
[0123] The password sharing system 102 may also include a shared key manager 606. The shared key manager 606 may manage shared encryption keys associated with shared folders (e.g., shared encryption keys utilized to encrypt payloads of the shared folders). For example, the shared key manager 606 may manage version numbers of shared encryption keys associated with the shared folders. The shared key manager 606 also manages key rotation events associated with the shared folders, including detecting key rotation events and notifying client devices of key rotation events.
[0124] Additionally, the password sharing system 102 may include a public key manager 608. The public key manager 608 may manage a collection of public keys associated with a shared folder. For example, the public key manager 608 may retrieve and / or update public encryption keys from one or more client devices that have membership access to the shared folder. The public key manager 608 may also provide the collection of public keys to a client device in connection with providing the client device with access to the shared folder.
[0125] The password sharing system 102 further includes a data storage manager 610 (comprising non-transitory computer memory / one or more memory devices) that stores and maintains data associated with the shared folders. For example, the data storage manager 610 may store passwords, encryption keys, shared memberships, and metadata associated with the shared folders. The data storage manager 610 may also store account information associated with one or more users of the content management system 110 and / or the password sharing system 102.
[0126] Reference is now made to FIG. 7, which illustrates a flow chart of a series of operations 700 utilizing encryption key exchange and key rotation to share passwords via a shared folder, according to one or more embodiments. Although FIG. 7 illustrates operations according to one embodiment, alternative embodiments may omit, add, rearrange, and / or modify any of the operations depicted in FIG. 7. The operations of FIG. 7 may be performed as part of a method. Alternatively, a non-transitory computer-readable medium may include instructions that, when executed by one or more processors, cause a computing device to perform the operations of FIG. 7. In yet another embodiment, a system may perform the operations of FIG. 7.
[0127] 7 illustrates a series of operations 700 including an operation 702 of retrieving a public key set in association with providing access to the shared folder. For example, operation 702 involves retrieving a public key set including one or more public encryption keys associated with one or more additional client devices in association with providing access to the shared folder. For example, operation 702 may involve requesting a first public encryption key from a first client device associated with a first additional account in the content management system. Operation 702 may also involve requesting a second public encryption key from a second client device associated with a second additional account in the content management system.
[0128] Operation 702 may involve determining additional accounts of the content management system according to shared memberships for the shared folder. Operation 702 may then involve requesting public encryption keys for registered client devices associated with the additional accounts of the content management system. Thus, operation 702 may involve requesting public encryption keys for registered client devices associated with shared memberships for the shared folder. Operation 702 may then involve providing a public encryption key from a registered client device as part of a public key set to an initial client device to have the initial client device encrypt the shared encryption key using a public key set that includes the public encryption key from the registered client device.
[0129] Additionally, operation 702 may include determining a set of password permissions associated with the set of passwords. Operation 702 may also involve generating a folder structure for the shared folder with access permissions to one or more folders corresponding to the set of password permissions in the folder structure. For example, operation 702 may involve determining a hierarchy of folders in the shared folder. Operation 702 may then involve determining access permissions for each folder in the hierarchy of folders according to the password permissions for shared membership for the shared folder.
[0130] As part of operation 702 or as an additional operation, the series of operations 700 may include assigning to a first account in the content management system a first set of access permissions for a first set of folders that correspond to the first set of passwords in the hierarchy of folders. Thereafter, the series of operations 700 may involve assigning to a second account in the content management system a second set of access permissions for a second set of folders that correspond to the second set of passwords in the hierarchy of folders.
[0131] As part of operation 702 or as an additional operation, the series of operations 700 may include receiving a request from an initial client device to generate a shared folder for the set of passwords to provide access to one or more additional client devices. In addition, the series of operations 702 may include receiving a request from the initial client device to share the shared folder for the set of passwords to provide access to one or more additional client devices after the shared folder was previously generated.
[0132] Additionally, the series of operations 700 includes an operation 704 of providing a public key set to an initial client device. For example, operation 704 may involve providing a public key set to an initial client device associated with an account in the content management system. Operation 704 may involve providing a public key set to the initial client device that includes one or more public encryption keys associated with one or more additional client devices. Illustratively, operation 704 may involve providing a first public encryption key and a second public encryption key to the initial client device as part of the public key set.
[0133] Further, the series of operations 700 includes an operation 706 of receiving a computing payload including the set of passwords and an encrypted shared encryption key. For example, operation 706 may involve receiving an encrypted payload from the initial client device including the set of passwords and a shared encryption key utilized to encrypt the set of passwords, encrypted in the shared folder utilizing the set of public keys, for storage in a shared folder.
[0134] Act 706 may involve receiving, as part of the encrypted payload, a shared encryption key encrypted using one or more public encryption keys associated with the one or more additional client devices.
[0135] The series of operations 700 may also include determining that a new client device associated with an account in the content management system is to be added to a shared membership for the shared folder. The series of operations 700 may then include providing a new public encryption key associated with the new client device to the initial client device. The series of operations 700 may also include receiving from the initial client device a shared encryption key encrypted in the shared folder using the new public encryption key. In addition, the series of operations 700 may include providing an encrypted payload to the new client device that includes the set of passwords and the shared encryption key encrypted in the shared folder using the new public encryption key.
[0136] The series of operations 700 may include detecting a key rotation event to change the shared encryption key. The series of operations 700 may include, in response to the key rotation event, sending an indication of the key rotation event to a plurality of client devices having current membership access to the shared folder. In addition, the series of operations 700 may include retrieving an updated set of public keys from the plurality of client devices and providing the updated set of public keys to the plurality of client devices. The series of operations 700 may also include receiving an updated encrypted payload from an initiator device of the plurality of client devices for storage in the shared folder, the updated payload including a set of passwords and a changed shared encryption key utilized to re-encrypt the set of passwords and encrypted in the shared folder utilizing the updated set of public keys.
[0137] Additionally, the series of operations 700 may include detecting a key rotation event by detecting a change in shared membership for the shared folder. The series of operations 700 may include detecting a key rotation event by receiving a command to change the shared encryption key from a client device of the plurality of client devices. Alternatively, the series of operations 700 may include detecting a key rotation by detecting a time threshold associated with the shared folder.
[0138] For example, the series of operations 700 may include detecting a change in shared membership for a shared folder. The series of operations 700 may then include determining an updated shared membership for the shared folder including multiple accounts of a content management system corresponding to the multiple client devices in response to the detected change in shared membership. Further, in response to the detected change in shared membership, the series of operations 700 may include sending an indication of a key rotation event to the multiple client devices associated with the updated shared membership.
[0139] The series of operations 700 may include receiving an updated encrypted payload for uploading to a shared folder from a first client device of the plurality of client devices, prior to or without receiving the updated encrypted payload from a second client device of the plurality of client devices. The series of operations 700 may include determining that the first client device is an initiator device and that the second client device is a follower device in response to receiving the updated encrypted payload from the first client device, prior to or without receiving the updated encrypted payload from the second client device. Additionally, the series of operations 700 may include sending an updated encrypted payload to the second client device, the updated encrypted payload including the set of passwords and the changed shared encryption key.
[0140] In connection with detecting a key rotation event, the series of operations 700 may include receiving an additional modified shared encryption key from the second client device prior to transmitting the updated encrypted payload to the second client device. For example, the series of operations 700 may include receiving an additional modified shared encryption key from a follower device of the plurality of client devices after receiving the updated encrypted payload from the initiator device. In addition, the series of operations 700 may include detecting a conflict between the modified shared encryption key received from the first client device (e.g., the initiator device) and the additional modified shared encryption key received from the second client device (e.g., the follower device). The series of operations 700 may also include rejecting the additional modified shared encryption key received from the second client device in response to detecting the conflict. Thereafter, the series of operations 700 may include transmitting an updated encrypted payload including the set of passwords and the modified shared encryption key received from the initiator device to the follower device.
[0141] In one or more embodiments, the series of operations 700 may include receiving a shared encryption key encrypted by one or more public encryption keys associated with one or more additional client devices, and then providing the shared encryption key encrypted by the one or more public encryption keys to the one or more additional client devices along with a set of passwords encrypted using the shared encryption key.
[0142] Embodiments of the present disclosure may include or utilize special purpose or general purpose computers including computer hardware, such as, for example, one or more processors and system memory, as described in more detail below. Embodiments within the scope of the present disclosure also include physical and other computer readable media for carrying or storing computer executable instructions and / or data structures. In particular, one or more of the processes described herein may be embodied, at least in part, in a non-transitory computer readable medium and implemented as instructions executable by one or more computing devices (e.g., any of the media content access devices described herein). In general, a processor (e.g., a microprocessor) receives instructions from a non-transitory computer readable medium (e.g., a memory, etc.) and executes those instructions, thereby performing one or more processes, including one or more of the processes described herein.
[0143] A computer-readable medium may be any available medium that can be accessed by a general-purpose or special-purpose computer system. A computer-readable medium that stores computer-executable instructions is a non-transitory computer-readable storage medium (device). A computer-readable medium that carries computer-executable instructions is a transmission medium. Thus, by way of example and not limitation, embodiments of the present disclosure may include at least two distinctly different kinds of computer-readable media: non-transitory computer-readable storage medium (device) and transmission media.
[0144] Non-transitory computer-readable storage media (devices) include RAM, ROM, EEPROM, CD-ROM, (e.g., RAM-based) solid-state drives ("SSD"), flash memory, phase-change memory ("PCM"), other types of memory, other optical disk storage, magnetic disk storage, or other magnetic storage devices, or alternatively, any other medium that can be used to store desired program code means in the form of computer-executable instructions or data structures and that can be accessed by a general-purpose or special-purpose computer.
[0145] A "network" is defined as one or more data links that enable the transport of electronic data between computer systems and / or modules and / or other electronic devices. When information is transferred or provided to a computer over a network or another communications connection (wired, wireless, or a combination of wired or wireless), the computer properly regards the connection as a transmission medium. A transmission medium may include a network and / or data links that may be used to transport the desired program code means in the form of computer-executable instructions or data structures and that may be accessed by a general-purpose or special-purpose computer. Combinations of the above should also be included within the scope of computer-readable media.
[0146] Furthermore, upon reaching various computer system components, program code means in the form of computer executable instructions or data structures may be automatically transferred from transmission media to non-transitory computer readable storage media (devices) (or vice versa). For example, computer executable instructions or data structures received over a network or data link may be buffered in RAM in a network interface module (e.g., "NIC") and then eventually transferred to computer system RAM and / or to low volatility computer storage media (devices) in the computer system. Thus, it should be understood that non-transitory computer readable storage media (devices) may be included in computer system components that also (or even primarily) utilize transmission media.
[0147] Computer-executable instructions include, for example, instructions and data that, when executed by a processor, cause a general-purpose computer, a special-purpose computer, or a special-purpose processing device to perform a certain function or group of functions. In some embodiments, computer-executable instructions are executed on a general-purpose computer to transform the general-purpose computer into a special-purpose computer that implements elements of the present disclosure. Computer-executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or source code. Although the subject matter has been described in language specific to structural features and / or methodological operations, it will be understood that the subject matter defined in the appended claims is not necessarily limited to the features or operations described above. Rather, the described features and operations are disclosed as exemplary forms of implementing the claims.
[0148] Those skilled in the art will appreciate that the present disclosure may be implemented in a networked computing environment having many types of computer system configurations, including personal computers, desktop computers, laptop computers, message processors, handheld devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile phones, PDAs, tablets, pagers, routers, switches, etc. The present disclosure may also be implemented in a distributed system environment in which tasks are performed by both local and remote computer systems that are linked through a network (either by wired data links, wireless data links, or a combination of wired and wireless data links). In a distributed system environment, program modules may be located in both local and remote memory storage devices.
[0149] Embodiments of the present disclosure may also be implemented in a cloud computing environment. In this specification, "cloud computing" is defined as a model for enabling on-demand network access to a shared pool of configurable computing resources. For example, cloud computing may be used in the market to provide ubiquitous and convenient on-demand access to a shared pool of configurable computing resources. The shared pool of configurable computing resources may be rapidly provisioned through virtualization, released with low management effort or service provider interaction, and then scaled accordingly.
[0150] Cloud computing models may consist of various characteristics such as, for example, on-demand self-service, broad network access, resource pooling, rapid elasticity, metered services, etc. Cloud computing models may exhibit various service models such as, for example, Software as a Service ("SaaS"), Platform as a Service ("PaaS"), and Infrastructure as a Service ("IaaS"). Cloud computing models may also be deployed using different deployment models such as private cloud, community cloud, public cloud, hybrid cloud, etc. In this specification and claims, a "cloud computing environment" is an environment in which cloud computing is employed.
[0151] FIG. 8 illustrates a block diagram of an exemplary computing device 800 that may be configured to execute one or more of the processes described above. It should be understood that the client devices and / or content management system 110 described herein may comprise one or more computing devices, such as computing device 800. As illustrated by FIG. 8, computing device 800 may comprise a processor 802, a memory 804, a storage device 806, an I / O interface 808, and a communication interface 810, which may be communicatively coupled by a communication infrastructure 812. Although an exemplary computing device 800 is illustrated in FIG. 8, the components illustrated in FIG. 8 are not intended to be limiting. In other embodiments, additional or alternative components may be used. Furthermore, in some embodiments, computing device 800 may include fewer components than those illustrated in FIG. 8. The components of computing device 800 illustrated in FIG. 8 will be described in further detail.
[0152] In particular embodiments, processor 802 includes hardware for executing instructions, such as those that make up a computer program. By way of example, and not limitation, to execute instructions, processor 802 may read (or fetch) instructions from an internal register, an internal cache, memory 804, or storage device 806, decode them, and execute them. In particular embodiments, processor 802 may include one or more internal caches for data, instructions, or addresses. By way of example, and not limitation, processor 802 may include one or more instruction caches, one or more data caches, and one or more translation lookaside buffers (TLBs). Instructions in an instruction cache may be copies of instructions in memory 804 or storage 806.
[0153] The memory 804 may be used to store data, metadata, and programs for execution by the processor. The memory 804 may include one or more of volatile and non-volatile memory, such as random access memory ("RAM"), read-only memory ("ROM"), solid state disk ("SSD"), flash, phase change memory ("PCM"), or other types of data storage. The memory 804 may be internal or distributed memory.
[0154] The storage device 806 includes storage for storing data or instructions. By way of example and not limitation, the storage device 806 may comprise a non-transitory storage medium as described above. The storage device 806 may include a hard disk drive (HDD), a floppy disk drive, a flash memory, an optical disk, a magneto-optical disk, a magnetic tape, or a universal serial bus (USB) drive, or a combination of two or more of these. The storage device 806 may include removable or non-removable (i.e., fixed) media, as appropriate. The storage device 806 may be internal or external to the computing device 800. In certain embodiments, the storage device 806 is a non-volatile solid-state memory. In other embodiments, the storage device 806 includes a read-only memory (ROM). Where appropriate, this ROM may be mask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM), or flash memory, or a combination of two or more of these.
[0155] The I / O interface 808 allows a user to provide input to and receive output from the computing device 800, and otherwise transfer data to and receive data from it. The I / O interface 808 may include a mouse, a keypad or keyboard, a touch screen, a camera, an optical scanner, a network interface, a modem, other known I / O devices, or a combination of such I / O interfaces. The I / O interface 808 may include one or more devices for presenting output to a user, including, but not limited to, a graphics engine, a display (e.g., a display screen), one or more output drivers (e.g., a display driver), one or more audio speakers, and one or more audio drivers. In some embodiments, the I / O interface 808 is configured to provide graphical data to a display for presentation to a user. The graphical data may represent one or more graphical user interfaces and / or any other graphical content that may serve a particular implementation.
[0156] Communications interface 810 may include hardware, software, or both. In any case, communications interface 810 may provide one or more interfaces for communication (e.g., packet-based communication) between computing device 800 and one or more other computing devices or networks. By way of example and not limitation, communications interface 810 may include a network interface controller (NIC) or network adapter for communicating with an Ethernet or other wired-based network, or a wireless NIC (WNIC) or wireless adapter for communicating with a wireless network such as WI-FI.
[0157] Additionally or alternatively, the communication interface 810 may facilitate communication with one or more portions of an ad-hoc network, a personal area network (PAN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), or the Internet, or a combination of two or more of these. One or more portions of one or more of these networks may be wired or wireless. By way of example, the communication interface 810 may facilitate communication with a wireless PAN (WPAN) (e.g., a BLUETOOTH WPAN), a WI-FI network, a WI-MAX network, a cellular telephone network (e.g., a Global System for Mobile Communications (GSM) network), or other suitable wireless network, or a combination thereof.
[0158] Additionally, communications interface 810 may facilitate communication of various communications protocols. Examples of communications protocols that may be used include data transmission media, communications devices, Transmission Control Protocol ("TCP"), Internet Protocol ("IP"), File Transfer Protocol ("FTP"), Telnet, HyperText Transfer Protocol ("HTTP"), HyperText Transfer Protocol Secure ("HTTPS"), Session Initiation Protocol ("SIP"), Simple Object Access Protocol ("SOAP"), Extensible Markup Language ("XML") and variations thereof, Simple Mail Transfer Protocol ("SMTP"), Real-Time Transport Protocol ("RTP"). This includes, but is not limited to, Time Division Multiple Access ("CDMA") technology, Time Division Multiple Access ("TDMA") technology, Short Message Service ("SMS"), Multimedia Message Service ("MMS"), radio frequency ("RF") signaling technology, Long Term Evolution ("LTE") technology, wireless communication technologies, in-band and out-of-band signaling technologies, and other suitable communications networks and technologies.
[0159] Communications infrastructure 812 may include hardware, software, or both that couple together components of computing device 800. By way of example, and not limitation, communications infrastructure 812 may include an Accelerated Graphics Port (AGP) or other graphics bus, an Enhanced Industry Standard Architecture (EISA) bus, a Front Side Bus (FSB), a HYPERTRANSPORT (HT) interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBAND interconnect, a Low Pin Count (LPC) bus, a memory bus, a Micro Channel Architecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, a PCI Express (PCIe) bus, a Serial Advanced Technology Attachment (SATA) bus, a Video Electronics Standard Related Local (VLB) bus, or another suitable bus, or combinations thereof.
[0160] 9 is a schematic diagram illustrating an environment in which one or more embodiments of the system 102 may be implemented. The online content management system 902 may generate, store, manage, receive, and transmit digital content (such as digital video). For example, the online content management system 902 may transmit and receive digital content to and from a client device 906 over a network 904. In particular, the online content management system 902 may store and manage a collection of digital content. The online content management system 902 may manage the sharing of digital content between computing devices associated with multiple users. For example, the online content management system 902 may facilitate a user sharing digital content with another user of the online content management system 902.
[0161] In particular, the online content management system 902 may manage the synchronization of digital content across multiple client devices 906 associated with one or more users. For example, a user may edit digital content using a client device 906. The online content management system 902 may cause the client device 906 to send the edited digital content to the online content management system 902. The online content management system 902 then synchronizes the edited digital content on one or more additional computing devices.
[0162] In addition to synchronizing digital content across multiple devices, one or more embodiments of the online content management system 902 may provide efficient storage options for users with large collections of digital content. For example, the online content management system 902 may store a collection of digital content on the online content management system 902, while the client devices 906 store only reduced-size versions of the digital content. The user may navigate and view the reduced-size versions of the digital content (e.g., thumbnails of digital images) on the client devices 906. In particular, one way that a user may experience the digital content is by viewing reduced-size versions of the digital content on the client devices 906.
[0163] Another way a user may experience digital content is by selecting a reduced size version of the digital content to request a full or high resolution version of the digital content from the online content management system 902. In particular, when a user selects a reduced size version of the digital content, the client device 906 may send a request to the online content management system 902 requesting the digital content associated with the reduced size version of the digital content. The online content management system 902 may respond to the request by sending the digital content to the client device 906. The client device 906 may then present the digital content to the user upon receiving the digital content. In this manner, a user may access a large collection of digital content while minimizing the amount of resources used on the client device 906.
[0164] Client device 906 may be a desktop computer, a laptop computer, a tablet computer, a personal digital assistant (PDA), an in- or out-of-car navigation system, a handheld device, a smartphone or other cellular or mobile phone, or a mobile gaming device, other mobile device, or other suitable computing device. Client device 906 may run one or more client applications, such as a web browser (e.g., Microsoft Windows Internet Explorer, Mozilla Firefox, Apple Safari, Google Chrome, Opera, etc.) or a native or dedicated client application (e.g., Facebook for iPhone or iPad, Facebook for Android, etc.), to access and view content over network 904.
[0165] Network 904 may represent a network or collection of networks (such as the Internet, a corporate intranet, a virtual private network (VPN), a local area network (LAN), a wireless local area network (WLAN), a cellular network, a wide area network (WAN), a metropolitan area network (MAN), or a combination of two or more such networks) through which client devices 906 may access online content management system 902.
[0166] In the foregoing specification, the present disclosure has been described with reference to certain exemplary embodiments thereof. Various embodiments and aspects of the present disclosure are described with reference to the details discussed herein, and the accompanying drawings illustrate various embodiments. The above description and drawings are illustrative of the present disclosure and should not be construed as limiting the present disclosure. Numerous specific details are described in order to provide a thorough understanding of various embodiments of the present disclosure.
[0167] The present disclosure may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects as merely illustrative and not restrictive. For example, the methods described herein may be performed with fewer or more steps / actions, or the steps / actions may be performed in a different order. In addition, the steps / actions described herein may be repeated or performed in parallel with each other, or with different instances of the same or similar steps / actions. The scope of the present application is therefore indicated by the appended claims, rather than by the foregoing description. All changes that come within the meaning and range of equivalency of the claims are to be embraced within their scope.
Claims
1. 1. A program that, when executed by at least one processor, causes a content management system to: Providing access to a shared folder of the content management system to a first client device associated with a first user account and to a second client device associated with a second user account; providing the first client device with a public key set including a public encryption key associated with the second client device; receiving from the first client device an encrypted payload including a password and a shared encryption key used to encrypt the password for storage in the shared folder, the shared encryption key being encrypted in the shared folder using the public key set; receiving password permissions from the first client device specifying a limited level of access to the password for the second client device; assigning, for the second client device, access permissions for the shared folder corresponding to the password permissions; in response to receiving a request to access the shared folder from the second client device, providing the encrypted payload to the second client device in accordance with the access rights for the shared folder, wherein providing the encrypted payload to the second client device includes causing the second client device to access the password at the limited access level by decrypting the shared encryption key with a private encryption key associated with the second client device and decrypting the password with the shared encryption key; A program that contains instructions to perform the following:
2. 2. The program of claim 1, which, when executed by the at least one processor, causes the content management system to: defining a folder hierarchy within the shared folder, the folder hierarchy including subfolders within the shared folder; The program, wherein assigning the access permissions for the shared folder corresponding to the password permissions includes changing an access control level for a subfolder.
3. 2. The program of claim 1, which, when executed by the at least one processor, causes the content management system to: receiving a request to generate a set of password permissions for a set of passwords, the set of passwords including the password; generating a folder structure for the shared folder with access permissions to one or more subfolders corresponding to the set of password permissions within the folder structure; The program further includes instructions to cause the program to:
4. 2. The program of claim 1, wherein the limited level of access to the password for the second client device enables the second client device to use the password without the second client device viewing the password.
5. 2. The program of claim 1, which, when executed by the at least one processor, causes the content management system to: receiving a request from the second client device to view or change the password; restricting the request to view or change the password based on the access permissions for the shared folder corresponding to the password permissions; The program further includes instructions to cause the program to:
6. 2. The program of claim 1, which, when executed by the at least one processor, causes the content management system to: receiving a request to change the password from the second client device; determining that the second client device is allowed to change the password based on the access permissions for the shared folder corresponding to the password permissions; changing the password in accordance with the request to change based on the second client device determining that the password can be changed; initiating a key rotation event based on changing the password; The program further includes instructions to cause the program to:
7. 2. The program of claim 1, wherein the password permissions specify one or more restrictions associated with a read control level, a write control level, or a view control level.
8. 1. A system comprising: At least one processor; A non-transitory computer readable storage medium that, when executed by the at least one processor, provides the system with: Providing access to a shared folder of the content management system to a first client device associated with a first user account and to a second client device associated with a second user account; receiving from the first client device an encrypted payload including a password and a shared encryption key utilized to encrypt the password for storage within the shared folder, the shared encryption key being encrypted within the shared folder using a public key set; applying access permissions for the shared folder corresponding to password permissions specifying a limited level of access to the password for the second client device based on information received from the first client device; in response to receiving a request to access the shared folder from the second client device, providing the encrypted payload to the second client device in accordance with the access rights for the shared folder; and a non-transitory computer-readable storage medium containing instructions to cause the system to:
9. 9. The system of claim 8, wherein when executed by the at least one processor, the system comprises: defining a folder hierarchy within the shared folder, the folder hierarchy including subfolders within the shared folder; The system, wherein assigning the access permissions for the shared folder corresponding to the password permissions includes changing an access control level for a subfolder.
10. 9. The system of claim 8, wherein when executed by the at least one processor, the system comprises: receiving a request to generate a set of password permissions for a set of passwords, the set of passwords including the password; generating a folder structure for the shared folder with access permissions to one or more subfolders corresponding to the set of password permissions within the folder structure; The system further includes instructions to:
11. 9. The system of claim 8, further comprising instructions that, when executed by the at least one processor, cause the system to assign additional access permissions to the first user account associated with the first client device, the additional access permissions specifying an access level to the password for the first client device, the additional password permissions for the first client device being different from the password permissions for the second client device.
12. 10. The system of claim 8, wherein the limited access level to the password for the second client device allows the second client device to read the password while restricting the second client device from viewing the password.
13. 9. The system of claim 8, wherein when executed by the at least one processor, the system comprises: receiving a request to change the password from the second client device; restricting the request to change the password based on the access permissions for the shared folder corresponding to the password permissions; The system further includes instructions to:
14. 10. The system of claim 8, wherein providing the encrypted payload to the second client device in accordance with the access rights for the shared folder includes providing the password to a service via the second client device as a login credential for the service.
15. 1. A computer-implemented method comprising: Providing access to a shared folder of the content management system to a first client device associated with a first user account and to a second client device associated with a second user account; receiving from the first client device an encrypted payload including a password and a shared encryption key utilized to encrypt the password for storage within the shared folder, the shared encryption key being encrypted within the shared folder using a public key set; assigning access permissions for the shared folder corresponding to password permissions specifying a limited access level to the password for the second client device; in response to receiving a request to access the shared folder from the second client device, providing the encrypted payload to the second client device in accordance with the access rights for the shared folder; A computer-implemented method comprising:
16. 16. The computer-implemented method of claim 15, comprising: receiving a request to generate a set of password permissions for a set of passwords, the set of passwords including the password; generating a folder hierarchy for the shared folder with access permissions to one or more subfolders corresponding to the set of password permissions in the folder hierarchy; The computer-implemented method further comprising:
17. 16. The computer-implemented method of claim 15, further comprising assigning additional access permissions to the first user account associated with the first client device that specify a level of access to the password for the first client device, the additional password permissions for the first client device being different than the password permissions for the second client device.
18. 16. The computer-implemented method of claim 15, wherein the password permissions specify one or more restrictions associated with a read control level, a write control level, or a view control level.
19. 16. The computer-implemented method of claim 15, comprising: receiving a request to change the password from the second client device; restricting the request to change the password based on the access permissions for the shared folder corresponding to the password permissions; The computer-implemented method further comprising:
20. 16. The computer-implemented method of claim 15, wherein providing the encrypted payload to the second client device in accordance with the access rights for the shared folder includes providing, via the second client device, the password to a service as a login credential for the service.
Citation Information
Patent Citations
Information sharing system, information preserving device, information processing method and recording medium therefor
JP1999331145A
Data management device, data management method, data management program, and data management system
JP2020098993A