Secure online collaboration

By storing documents in encrypted form in the storage system of the cloud-based content management platform and limiting the server-side decryption capabilities, the security vulnerability of document content protection in online collaboration is solved, and secure and reliable document collaboration is achieved.

CN119475374APending Publication Date: 2025-02-18GOOGLE LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411481388.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2019-08-20
Filing Date
2020-08-20
Publication Date
2025-02-18

AI Technical Summary

Technical Problem

The existing cloud-based content management platform lacks protection mechanisms for document content from non-collaborator entities during online collaboration, resulting in security vulnerabilities.

Method used

By storing documents in an encrypted form in a cloud-based storage system and being unable to decrypt document content on the server side, ensuring that only collaborators can access encrypted data and achieve secure online collaboration.

Benefits of technology

Enhanced data security of document content, prevent non-collaborators from accessing document content, enabling more confidential and reliable document storage and collaboration.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119475374A_ABST
    Figure CN119475374A_ABST
Patent Text Reader

Abstract

The invention relates to secure online collaboration. A method for secure online collaboration is provided. The method includes receiving, at a server of a cloud-based storage system, first encrypted data from a first client device. The cloud-based storage system stores a plurality of documents in encrypted form. The method also includes determining a document of the plurality of documents associated with the first encrypted data. The server cannot access the document in the decrypted form. The first encrypted data represents an editing of a portion of the document. The method also includes determining a plurality of user accounts for collaborators of the document. The plurality of user accounts includes a first user account associated with the first client device. Further, the method includes providing the first encrypted data to one or more other client devices, each client device associated with one of the plurality of user accounts, not including the first user account.
Need to check novelty before this filing date? Find Prior Art

Description

Description of the case This application is a divisional application of Chinese invention patent application No. 202080007799.0, filed on August 20, 2020. Technical Field

[0001] Aspects and implementations of the present disclosure relate to online collaboration using a cloud-based content management platform, and more particularly, to secure online collaboration. Background Art

[0002] During online collaboration, users work together using various collaboration tools provided by the cloud-based content management platform over the network. Collaboration tools include, for example, document processing applications (e.g., word processing applications, presentation slide applications, and spreadsheet applications), document storage, online calendars, emails, messengers, etc. Therefore, users in such a collaborative environment will edit and comment on documents and respond to any feedback from other users over the network to achieve goals. Summary of the invention

[0003] The following is a simplified overview of the disclosure in order to provide a basic understanding of some aspects of the disclosure. This overview is not an extensive review of the disclosure. It is not intended to identify the main or key elements of the disclosure, nor to delineate any scope of a particular implementation of the disclosure or any scope of the claims. Its sole purpose is to present some concepts of the disclosure in a simplified form as a prelude to a more detailed description presented later.

[0004] In some implementations, a system and method for providing secure online collaboration are disclosed. In an implementation, first encrypted data is received from a first client device at a first server of a cloud-based storage system, the cloud-based storage system storing multiple documents in encrypted form. A document associated with the first encrypted data among multiple documents is determined at the first server, wherein the first server cannot access the document in decrypted form, and wherein the first encrypted data represents an edit to a portion of the document. The first server cannot access the document in decrypted form because decryption of the document stored in encrypted form in the cloud-based storage system is not allowed. For example, the first server does not have access to data required for encryption of the document. Multiple user accounts of collaborators of the document are determined at the first server, wherein the multiple user accounts include a first user account associated with the first client device. The first encrypted data is provided by the first server to one or more other client devices, each client device being associated with one of the multiple user accounts, excluding the first user account.

[0005] In another implementation, a graphical user interface (GUI) for online collaborative editing of a document is provided in association with a first server of a cloud-based storage system. An edit to a portion of the document is received via the GUI. Encrypted data is generated, wherein the encrypted data represents the edit and includes the edit encrypted based on a data encryption key and the data encryption key encrypted based on a master encryption key provided by a second server. The encrypted data is provided to the first server of the cloud-based storage system.

[0006] The subject matter summarized above and described in more detail below supports more secure document management at a cloud-based storage system (e.g., a cloud-based content management platform) because it is not possible to decrypt documents stored at the cloud-based storage system (e.g., a cloud-based content management platform). Users / collaborators can provide their encrypted documents to the cloud-based storage system / cloud-based content management platform without worrying about whether the content of the document will become available to other users who are not collaborators on the document and, further, are not permitted to gain knowledge about the content of the document. Thus, a more confidential implementation of the cloud-based storage system / cloud-based content management platform is achieved.

[0007] Furthermore, transparent and efficient encryption key management is achieved. Such encryption key management uses as few resources as possible. Furthermore, it achieves and supports a reliable and confidential implementation of the cloud-based storage system / cloud-based content management platform. For example, transparency is given, under which clear and verifiable responsibilities for handling key data are defined and presented. For example, efficiency is given, under which as few components and as little communication as possible are involved to ensure confidential and reliable storage of encrypted documents on the cloud-based storage system / cloud-based content management platform. Minimizing the components and the amount of communication involved increases security and reliability because the vulnerability points for unallowable and unauthorized detection of data required for encryption are reduced.

[0008] The subject matter described herein is not limited to the exemplary advantages listed above. Further advantages are achievable and discernible in view of the disclosure of the present application. BRIEF DESCRIPTION OF THE DRAWINGS

[0009] The various aspects and implementations of the present disclosure will be more fully understood from the specific implementations given below and the accompanying drawings of various aspects and implementations of the present disclosure, but the present disclosure should not be considered to be limited to specific aspects or implementations, but is only for explanation and understanding.

[0010] Figure 1 An example of a system architecture for an implementation of the present disclosure is illustrated.

[0011] Figure 2AAn example of a system architecture for providing secure collaborative editing of documents according to one implementation of the present disclosure is depicted.

[0012] Figure 2B An example of a system architecture for providing secure collaborative editing of documents according to another implementation of the present disclosure is illustrated.

[0013] Figure 3A A flow chart of a method for generating encrypted data for secure online collaboration according to one implementation of the present disclosure is depicted.

[0014] Figure 3B A flowchart of a method for updating an online collaborative document based on encrypted data according to one implementation of the present disclosure is illustrated.

[0015] Figure 4 A flow chart of a method for providing encrypted data to collaborators according to one implementation of the present disclosure is depicted.

[0016] Figure 5 A block diagram of an example computing system that operates in accordance with one or more aspects of the present disclosure is depicted. DETAILED DESCRIPTION

[0017] The following is a simplified overview of the disclosure in order to provide a basic understanding of some aspects of the disclosure. This overview is not an extensive review of the disclosure. It is not intended to identify the main or key elements of the disclosure, nor to delineate any scope of a particular implementation of the disclosure or any scope of the claims. Its sole purpose is to present some concepts of the disclosure in a simplified form as a prelude to a more detailed description presented later.

[0018] The cloud-based content management platform provides collaborative tools such as document processing applications, document storage, online calendars, communication applications, etc. Therefore, collaborators can edit documents and view other collaborators' contributions simultaneously through the network based on the cloud-based content management platform. "Collaborator" as used herein refers to a user with a user account that is assigned permissions to access (e.g., view and / or edit) a document using a cloud-based content management platform. However, such online collaborative editing of documents is currently susceptible to interference or interception by entities other than the sender and one or more recipients (i.e., entities other than the intended collaborators). Due to network-based communications between various collaborators who edit the document, the document content, including the content edited by the collaborators, may be susceptible to security vulnerabilities. Therefore, the current cloud-based content management platform has the following technical problems: lack of protection mechanisms for document content from entities other than the corresponding collaborators.

[0019] Aspects and implementations of the present disclosure address the above and other deficiencies or problems by supporting the exchange of document edits in encrypted form between collaborators without allowing access to the edits in decrypted form at the server of the cloud-based content management platform. For example, a document may be stored in an encrypted form at a cloud-based content management platform, and the server of the cloud-based content management platform may not be able to decrypt the document (i.e., the server may not be able to access the document in decrypted form). During the exchange of document edits between collaborators, the server may receive encrypted data from the collaborator's client device and may determine which document is associated with the received encrypted data. The server may then determine which user accounts are associated with the document (i.e., the user accounts of the collaborators of the document). The user accounts may include a user account associated with a client device that sends encrypted data to the server. In addition, the server may provide the encrypted data to one or more other client devices, each client device being associated with one of the user accounts, excluding the user account associated with the client device that sends encrypted data to the server.

[0020] Some technical advantages of implementations of the present disclosure include enhancing data security of document content when it is received from a collaborator's client device (including edits) and when it is stored using a cloud-based content management platform.

[0021] Figure 1 An example of a system architecture 100 for a cloud-based storage system for implementations of the present disclosure is illustrated.

[0022] The system architecture 100 includes a cloud-based content management platform 110 connected to client devices 120A to 120Z via a network 130. The cloud-based content management platform 110 refers to a collection of physical machines that host applications that provide one or more services (e.g., content management) to multiple client devices 120A to 120Z via the network 130. The network 130 can be a public network (e.g., the Internet), a private network (e.g., a local area network (LAN) or a wide area network (WAN)), or a combination thereof. The network 130 may include a wireless infrastructure that may be provided by one or more wireless communication systems, such as a wireless fidelity (WiFi) hotspot connected to the network 130 and / or a wireless carrier system that may be implemented using various data processing equipment, communication towers, etc. Additionally or alternatively, the network 130 may include a wired infrastructure (e.g., Ethernet).

[0023] The cloud-based content management platform 110 may include a server 112 and a data repository 114. The data repository 114 may be separate from the server 112 and communicatively coupled to the server 112, or the data repository 114 may be part of the server 112. In some implementations, the data repository 114 may be included as part of the client devices 120A to 120Z. The data repository 114 may store data associated with various collaboration tools, including document processing applications, online calendars, and communication tools such as email and messaging tools. In addition, the data repository 114 may store various types of documents in an encrypted form. Examples of document types include slide presentations, text documents, spreadsheets, or any type of electronic document (e.g., electronic documents including text, tables, videos, images, graphics, slides, charts, software programming codes, designs, lists, plans, blueprints, maps, etc.). These documents may be edited by collaborators simultaneously. The data repository 114 may also store any identifying information (eg, document identifying information such as document name, user identifying information such as 'username@domain.com', etc.), and timestamps associated with the document.

[0024] Server 112 may represent one or more physical machines (eg, server machines, desktop computers, etc.) that include one or more processing devices communicatively coupled to memory devices and input / output (I / O) devices. Server 112 may host document manager 115 .

[0025] The document manager 115 may be implemented as computer instructions executable by one or more processing devices on the server 112. In an alternative implementation, the document manager 115 may be installed on the client devices 120A to 120Z (e.g., as a standalone application) and operate as a peer in a peer-to-peer environment. In another alternative implementation, an application on the client devices 120A to 120Z may interact with the document manager 115 and may perform some of the functionality of the document manager 115.

[0026] In an implementation, the document manager 115 may provide a user interface (UI) 124A to 124Z, which may be communicated to the client device 120A to 120Z as a web page to be rendered by a web browser and displayed on the client device 120A to 120Z in a web browser window. In another implementation, the UI 124A to 124Z may be provided by a mobile application or a desktop application. For example, the UI 124A to 124Z may be displayed by a native application executed on the client device 120A to 120Z. The native application may be separate from the web browser.

[0027] The server 112 may include a secure collaboration component 116 to provide a secure environment for online collaborative editing of documents. The secure collaboration component 116 enables the client devices 120A to 120Z to securely perform collaborative actions (e.g., editing) on ​​the document. In particular, the secure collaboration component 116 may receive encrypted data from a collaborator's client device 120A to 120Z and distribute such encrypted data to other client devices 120A to 120Z of the collaborator without having access to the decrypted content of the encrypted data.

[0028] For example, the security collaboration component 116 receives encrypted data representing an edit to a portion of a document. The encrypted data may include an encrypted edit and an encryption key. The encrypted edit corresponds to an edit encrypted using a data encryption key. The encryption key corresponds to a data encryption key encrypted or wrapped using a master encryption key. Because the data encryption key is encrypted using the master encryption key, and the server 112 (i.e., the processing device of the server 112) does not have access to the master encryption key, the server 112 cannot decrypt the (encrypted) edit. Therefore, the server 112 cannot access any portion of the document in a decrypted form.

[0029] Upon receiving the encrypted data, the secure collaboration component 116 may determine the document associated with the encrypted data and the user accounts of the collaborators of the document. In one implementation, the secure collaboration component 116 may assign a master or collaboration manager role to the collaborator's user account. The collaboration manager role may involve coordinating online collaborative editing with the secure collaboration component 116 by ensuring that each collaborator has access to the same or substantially the same version of the document. Based on whether the encrypted data is received from a client device 120A to 120Z associated with the collaboration manager role, the secure collaboration component 116 may determine to which different client device 120A to 120Z the encrypted data should be forwarded.

[0030] For example, when the secure collaboration component 116 receives encrypted data from a client device 120A to 120Z that is not associated with the collaboration manager role, the secure collaboration component 116 may route the encrypted data to the client device 120A to 120Z associated with the collaboration manager role. In response to receiving the plurality of encrypted data from the secure collaboration component 116, the client device 120A to 120Z associated with the collaboration manager role may merge the edits made by the collaborators (after decrypting the encrypted data) into the encrypted data sent to the secure collaboration component 116. The secure collaboration component 116 then distributes the encrypted data received from the client device 120A to 120Z associated with the collaboration manager role to other collaborators.

[0031] In some implementations, the security collaboration component 116 of the server 112 may interact with the document manager 115 to provide implementations of the present disclosure. Figure 2A and Figure 2B Other aspects of the security collaboration component 116 are described in more detail.

[0032] Client devices 120A to 120Z may include one or more processing devices communicatively coupled to a memory device and an I / O device. Client devices 120A to 120Z may be desktop computers, laptop computers, tablet computers, mobile phones (e.g., smart phones), or any suitable computing devices. As discussed above, client devices 120A to 120Z may each include a web browser and / or a client-based application that runs in a web browser using HTML and JavaScript code. Moreover, client devices 120A to 120Z may each include other client applications, such as mobile applications or desktop applications. In one implementation, client devices 120A to 120Z may each store a local version (or document model) of a document associated with a corresponding user account. The local version of a document may reflect the edits made by a collaborator (including the corresponding user) since the document was created until the corresponding user last accessed the document. The server 112 cannot access the local version.

[0033] In one implementation, the client devices 120A to 120Z are associated with the secure collaboration component 116 of the server 112 to enable secure online collaboration. The client devices 120A to 120Z can present GUIs 124A to 124Z for online collaborative editing of documents via a web browser or client application. The client devices 120A to 120Z can generate encrypted data representing edits to a portion of the document to the server 112 to share with other collaborators. Examples of edits or changes can include keystrokes in a portion of the document (at a specific index or location) and icon or menu selections that change the text format in a portion of the document.

[0034] The client devices 120A to 120Z also receive such encrypted data from the server 112, decrypt the encrypted data, and update the document (i.e., the local version of the document stored in the client devices 120A to 120Z) based on the decrypted data. During the encryption and decryption of the edits, the client devices 120A to 120Z do not expose the edits in decrypted form to any other device (including the server 112). For example, the client devices 120A to 120Z generate a data encryption key and encrypt the edits using the data encryption key. The client devices 120A to 120Z also communicate with another server that is independent of and not connected to the server 112 to encrypt or wrap the data encryption key without exposing the edits in decrypted form. The client devices 120A to 120Z then provide the encrypted data including the encrypted edits and the encryption key to the server 112, which does not have access to the data encryption key used to encrypt the data or the master encryption key used to encrypt or wrap the data encryption key. The following is about Figure 2A and Figure 2B Further details of client devices 120A through 120Z are described.

[0035] Figure 2A Depicted is an example of a system architecture 200 for providing secure collaborative editing of documents according to one implementation of the present disclosure.

[0036] The system architecture 200 includes client devices 210A to 210Z, a cloud server 212, and a key management server 215. The client devices 210A to 210Z are connected to the cloud server 212 and the key management server 215, while the cloud server 212 and the key management server 215 are not connected to each other. The cloud server 212 corresponds to Figure 1 The cloud server 212 stores documents in encrypted form for user accounts associated with the cloud-based storage system. The key management server 215 is a server that manages the encryption (or wrapping) and decryption (or unwrapping) of data encryption keys for the client devices 210A to 210Z. The data encryption keys are used to encrypt and decrypt data (e.g., document edits).

[0037] and Figure 1 Similar to client devices 120A to 120Z of FIG. 1 , client devices 210A to 210Z include one or more processing devices that enable users to collaboratively edit documents in a secure online environment. That is, users can securely share edits with other collaborators and securely receive edits made by other collaborators without exposing the edits in decrypted form to cloud server 212 and key management server 215, as will be described with respect to operations 220 to 226.

[0038] At operation 220, client devices 210A to 210Z perform encryption. For example, client devices 210A to 210Z can receive an edit to a portion of a document via a graphical user interface (GUI) for online collaborative editing of the document on a web browser of client devices 210A to 210Z. Examples of edits or changes may include keystrokes in a portion of a document (at a specific index or location) and icons or menu selections that change the text format in a portion of the document. In response, client devices 210A to 210Z generate a data encryption key and use the data encryption key to encrypt the received edit. Client devices 210A to 210Z can generate a data encryption key according to the Advanced Encryption Standard (AES). The length of the data encryption key can be, for example, 256 bits. The data encryption key can also be used to decrypt the encrypted edit. Client devices 210A to 210Z can generate a data encryption key with any other length based on any other encryption key standard.

[0039] Next, at operation 222, the client device 210A to 210Z transmits the data encryption key to the key management server 215 for encryption or wrapping. In response, the key management server 215 may wrap or encrypt the data encryption key using the master encryption key and provide the encrypted data encryption key to the client device 210A to 210Z. In some implementations, the key management server 215 may verify a document identifier (e.g., the name of the document) and / or a user identifier (e.g., username@domain.com) associated with the client device 210A to 210Z before performing the wrapping or encryption.

[0040] The master encryption key may be used for both encryption and decryption of the data encryption key. The key management server 215 may generate the master encryption key. The key management server 215 may generate the master encryption key according to, for example, AES with a length of 256 bits. The key management server 215 may generate the master encryption key with any other length based on any other encryption key standard. At operation 224, the client device 210A to 210Z receives the encrypted key from the key management server 215. In another implementation, the client device 210A to 210Z may request the key management server 215 to provide the master encryption key and perform wrapping or encryption on the data encryption key using the master encryption key itself.

[0041] Then, at operation 226, the client device 210A-210Z provides the encrypted data to the cloud server 212. That is, the client device 210A-210Z combines both the encrypted edits and the encrypted key and transmits the combined data to the cloud server 212. In response, the cloud server 212 stores the encrypted data. The cloud server 212 also provides the encrypted data to appropriate client devices 210A-210Z associated with other collaborators of the document. In this manner, collaborators of the document may have access to the same or substantially the same version of the document.

[0042] To this end, the client devices 210A to 210Z prevent the cloud server 212 and the key management server 215 from accessing the edits (in decrypted form) by ensuring that neither the cloud server 212 nor the key management server 215 is provided with the encrypted edits and the corresponding data encryption key for decrypting the encrypted edits. That is, the client devices 210A to 210Z provide the encrypted edits and the encryption key to the cloud server 212. In addition, the client devices 210A to 210Z only provide the corresponding data encryption key to the key management server 215, and not the encrypted edits. However, the collaborators will have access to the decrypted edits because each collaborator's client device 210A to 210Z will receive the encrypted edits from the cloud server 212 and obtain the corresponding data encryption key through the key management server 215, as will be described below with respect to Figure 2B Described in detail.

[0043] Figure 2B An example of a system architecture 250 for providing secure collaborative editing of documents according to another implementation of the present disclosure is illustrated.

[0044] and Figure 2A Similar to the system architecture 200 of FIG. 1 , the system architecture 250 includes client devices 260A to 260Z, a cloud server 262, and a key management server 265. The client devices 260A to 260Z are connected to the cloud server 262 and the key management server 265, while the cloud server 262 and the key management server 265 are not connected to each other. The cloud server 262 corresponds to Figure 1 The key management server 265 also corresponds to Figure 2A The key management server 215.

[0045] and Figure 1 The client devices 120A to 120Z are similar to and are Figure 2ASimilar to client devices 210A to 210Z of FIG. 2 , client devices 260A to 260Z enable users to collaboratively edit documents in a secure online environment. That is, users can securely share edits with other collaborators and securely receive edits made by other collaborators without exposing the edits in decrypted form to cloud server 262 and key management server 265, as will be described with respect to operations 270 to 276.

[0046] At operation 270, client devices 260A-260Z receive encrypted data from cloud server 262. The encrypted data represents edits made to a portion of the document by another collaborator of the document. The encrypted data includes the edits encrypted by the data encryption key and the data encryption key encrypted or wrapped by the master encryption key.

[0047] At operation 272, the client device 260A to 260Z transmits the encryption key from the encrypted data to the key management server 265. In response, the key management server 265 decrypts the encryption key with the master encryption key and provides the decrypted key (i.e., the data encryption key) to the client device 260A to 260Z. In some implementations, before decryption, the key management server 265 may confirm the document identifier and / or user identifier associated with the client device 260A to 260Z. At operation 274, the client device 260A to 260Z receives the data encryption key from the key management server 265. In another implementation, the client device 260A to 260Z may request the key management server 265 to provide the master encryption key and obtain the data encryption key by decrypting the encrypted key using the master encryption key.

[0048] At operation 276, the client device 260A-260Z performs decryption. For example, the client device 260A-260Z extracts the encrypted edits from the received encrypted data at operation 270. The client device 260A-260Z then decrypts the edits using the data encryption key obtained through the key management server 265. Thus, the client device 260A-260Z can access the edits made by another collaborator.

[0049] In a further implementation, client devices 260A to 260Z may be associated with a master or collaboration manager role for coordinating online collaboration using cloud server 262 editing. Such client devices 260A to 260Z may ensure that each collaborator has access to the same or substantially the same version of the document in collaboration with cloud server 262. For example, cloud server 262 may route edits received from collaborators to client devices 260A to 260Z associated with the collaboration manager role in encrypted form. Client devices 260A to 260Z may then sort the edits decrypted as described above in chronological order (after resolving any conflicts between edits) and forward the ordered edits to other client devices 260A to 260Z of the collaborator. In response, each of the collaborator's client devices 260A to 260Z may update a local version (or document model) of the document based on the edits received. To this end, collaborators may view the latest edits made by others and process the same or substantially the same version of the document.

[0050] Figure 3A A flow chart of a method 300 for generating encrypted data for secure online collaboration according to one implementation of the present disclosure is depicted. The method 300 may be executed by a client-based application running in a web browser of a client device 120A to 120Z, 210A to 210Z, 260A to 260Z, such as using HTML and JavaScript code. The client-based application may be executed by a processing device of the client device 120A to 120Z, 210A to 210Z, 260A to 260Z. The method 300 may be implemented for each client device 120A to 120Z, 210A to 210Z, 260A to 260Z of a cloud-based content management platform 110. In addition, the method 300 may be executed when a user of the client device 120A to 120Z, 210A to 210Z, 260A to 260Z logs into a user account of a cloud storage system provided by a server 112, 212, 262. In another implementation, Figure 1 The security collaboration component 116 of the server 112 executes the method 300. Therefore, the method 300 can be executed by one or more processing devices of the server 112, 212, 262.

[0051] For simplicity of explanation, the method 300 of the present disclosure is illustrated and described as a series of actions. However, the actions according to the present disclosure may occur in various orders and / or simultaneously, and occur together with other actions not presented and described herein. In addition, according to the disclosed subject matter, all illustrated actions may not be required to implement the method 300. In addition, those skilled in the art will understand and appreciate that the method 300 may alternatively be represented as a series of interrelated states via a state diagram or event. In addition, it should be understood that the method 300 disclosed in this specification can be stored on an article to facilitate the transportation and transfer of this method to a computing device. The term "article" as used herein is intended to encompass a computer program accessible from any computer-readable device or storage medium.

[0052] At operation 302, the processing device of the client device 120A to 120Z, 210A to 210Z, 260A to 260Z presents a graphical user interface (GUI) for online collaborative editing of the document. In one implementation, the GUI includes a portion of the latest version of the document and provides the user with tools to access (e.g., view or edit) the document and any other features required for online collaboration with other users (i.e., collaborators). The processing device of the client device can obtain the latest version of the document by accessing the local version (or document model) of the document associated with the user account. The local version of the document will reflect the edits made by the collaborator (including the user) since the document was created until the user last accessed the document. The local version is stored on the client device 120A to 120Z, 210A to 210Z, 260A to 260Z and cannot be accessed by the server 112, 212, 262 of the cloud storage system (also referred to as the cloud-based content management platform 110). Furthermore, during collaboration, the local version may only be managed locally on the client device 120A-120Z, 210A-210Z, 260A-260Z (ie, by the processing device of the client device).

[0053] To obtain the latest version of the document, the client device 120A-120Z, 210A-210Z, 260A-260Z may send a request to the server 112, 212, 262 for any edits received from other collaborators since the user's last visit. For example, the processing device may provide the server 112, 212, 262 with login credentials for a user account of the cloud storage system (e.g., a user identifier and password such as 'username@domain.com', etc.). Upon successful login, the server 112, 212, 262 may provide the client device 120A-120Z, 210A-210Z, 260A-260Z (e.g., via a UI representing a home screen of the user account) with a list of documents (e.g., word documents, spreadsheet documents, presentation slides) stored by the server 112, 212, 262 for the user account.

[0054] The server 112, 212, 262 may store documents in an encrypted form but may not have access to a decrypted form of the document. Each document stored on the server 112, 212, 262 may correspond to a set of encrypted data received from a client device 120A to 120Z, 210A to 210Z, 260A to 260Z associated with a collaborator of the document. The set of encrypted data represents all edits made to the document since the document was created. Thus, the server 112, 212, 262 stores the entire contents of the document in an encrypted form. More details of the encrypted data will be described below.

[0055] The client device 120A-120Z, 210A-210Z, 260A-260Z may receive a selection of a document listed on the home screen from the user via a web browser and indicate the selection and the time when the user last exited the cloud storage system to the server 112, 212, 262. In response, the server 112, 212, 262 may provide any edits received from other collaborators to the client device 120A-120Z, 210A-210Z, 260A-260Z in encrypted form. The client device 120A-120Z, 210A-210Z, 260A-260Z may perform the following operations as described above: Figure 3B The received data is decrypted in a manner similar to that described.The client devices 120A-120Z, 210A-210Z, 260A-260Z may then incorporate the edits made by other collaborators into the local version, thereby updating the local version to correspond to the latest version of the document.

[0056] At operation 304, client devices 120A to 120Z, 210A to 210Z, 260A to 260Z receive edits to a portion of a document via a GUI. Examples of edits or changes may include keystrokes in a portion of a document (at a specific index or location) and icons or menu selections that change the text format in a portion of a document. Client devices 120A to 120Z, 210A to 210Z, 260A to 260Z may receive edits from a user of client devices 120A to 120Z, 210A to 210Z, 260A to 260Z via a GUI. Client devices 120A to 120Z, 210A to 210Z, 260A to 260Z may receive keystrokes and / or icons or menu selections performed over a period of time (e.g., 0.5 seconds) and recognize a series of inputs as edits. In another example, the client devices 120A-120Z, 210A-210Z, 260A-260Z may receive each keystroke or icon or menu selection as an edit. Additionally, the client devices 120A-120Z, 210A-210Z, 260A-260Z may update the document on the GUI to reflect the received edits. For example, the client devices 120A-120Z, 210A-210Z, 260A-260Z may incorporate the received edits into a local version of the document and present the updated version on the GUI.

[0057] In further implementations, the client devices 120A-120Z, 210A-210Z, 260A-260Z may record the edits received at operation 304. For example, the client devices 120A-120Z, 210A-210Z, 260A-260Z may record a log entry including the edits (e.g., keystrokes in a portion of a document, an icon or menu selection of text in a portion of a document), a timestamp indicating the time when the edits were received, a user identifier, and / or a document identifier (e.g., the name of the document). The log entry may later be used to resolve any conflicts in updating the local version of the document, such as resolving conflicts regarding the edits. Figure 4 as described.

[0058] In the online collaborative editing of a document, in the case where the user account associated with the client device 120A to 120Z, 210A to 210Z, 260A to 260Z is assigned a master or collaborative manager role, log entries can also be used to sort the edits made by the collaborators of the document. Such a role requires the client device 120A to 120Z, 210A to 210Z, 260A to 260Z associated with the collaborative manager user account to use the log management online collaborative editing, and the approach is to ensure that each collaborator has access to the same or substantially the same version of the document. The client device 120A to 120Z, 210A to 210Z, 260A to 260Z receives the edits made by the collaborator from the server 112, 212, 262, and records each edit as described above. The client device 120A to 120Z, 210A to 210Z, 260A to 260Z sorts the edits in chronological order based on the log entries (after resolving any conflicts). In addition, the client devices 120A-120Z, 210A-210Z, 260A-260Z distribute the ordered edits to the client devices 120A-120Z, 210A-210Z, 260A-260Z of other collaborators so that each local version of the client devices 120A-120Z, 210A-210Z, 260A-260Z is updated in the same manner. Figure 3B and Figure 4 Describes the host or collaborating role in more detail.

[0059] At operation 306, the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z generate encrypted data representing the edit. In some implementations, the encrypted data may include the edit encrypted based on a data encryption key using symmetric encryption. That is, the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z may generate a data encryption key and encrypt the edit using the data encryption key. Symmetric encryption requires only one data encryption key to encrypt and decrypt data. The client device may generate the data encryption key according to the Advanced Encryption Standard (AES). The length of the data encryption key may be, for example, 256 bits. The client devices 120A to 120Z, 210A to 210Z, 260A to 260Z may generate the data encryption key based on any other encryption standard and with any other length. Each time the client device 120A-120Z, 210A-210Z, 260A-260Z encrypts a compilation, the client device 120A-120Z, 210A-210Z, 260A-260Z may generate a different data encryption key.

[0060] In addition to the encrypted edits, the encrypted data may also include an encryption key - a data encryption key that is encrypted or wrapped based on a master encryption key. For example, a client device 120A to 120Z, 210A to 210Z, 260A to 260Z may request a key management server 215, 265 to encrypt or wrap a data encryption key. A key management server 215, 265 is a server that manages the encryption and decryption of data encryption keys. Before processing the request for encryption and decryption, the key management server 215, 265 may first authorize the request based on a user identifier and / or document identifier received from the processing device. The key management server 215, 265 may generate a master encryption key for both encryption and decryption of the data encryption key. The key management server 215, 265 may generate a master encryption key based on AES with a length of 256 bits. The key management server 215, 265 may generate a master encryption key with any other length based on any other encryption standard. The key management server 215, 265 may use the same master encryption key to encrypt any data encryption keys associated with the same document or the same group of collaborators. Upon request, the key management server 215, 265 may only provide the master encryption key to the client device 120A to 120Z, 210A to 210Z, 260A to 260Z or may perform encryption and decryption of the data encryption key. In one implementation, the key management server 215, 265 is only connected to the client device 120A to 120Z, 210A to 210Z, 260A to 260Z and not to the server 112, 212, 262 of the cloud storage system.

[0061] When generating an encryption key, the client device 120A to 120Z, 210A to 210Z, 260A to 260Z may send a data encryption key and a request to encrypt or wrap the data encryption key to the key management server 215, 265. In the request, the client device 120A to 120Z, 210A to 210Z, 260A to 260Z may include identification information such as a document identifier or a user identifier for authorization by the key management server 215, 265. Subsequently, the client device 120A to 120Z, 210A to 210Z, 260A to 260Z may receive the encrypted key from the key management server 215, 265. In some other implementations, the client device 120A-120Z, 210A-210Z, 260A-260Z may request a master encryption key from the key management server 215, 265 without requesting encryption or wrapping to be performed by the key management server 215, 265. In this case, the client device 120A-120Z, 210A-210Z, 260A-260Z receives the master encryption key from the key management server 215, 265 and locally encrypts the data encryption key using the master encryption key. In addition, the client device 120A-120Z, 210A-210Z, 260A-260Z may use the same master encryption key to encrypt any data encryption keys generated by the client device 120A-120Z, 210A-210Z, 260A-260Z for encrypting edits associated with the same document.

[0062] Because the client device 120A-120Z, 210A-210Z, 260A-260Z only provides the encryption request (and the data encryption key), the key management server does not have access to any portion of the document in either encrypted or decrypted form. Once the client device 120A-120Z, 210A-210Z, 260A-260Z has the encryption edit and the encryption key, the client device 120A-120Z, 210A-210Z, 260A-260Z can combine the encryption edit and the encryption key to generate encrypted data.

[0063] At operation 308, the client device 120A-120Z, 210A-210Z, 260A-260Z provides the encrypted data to the server 112, 212, 262 of the cloud-based storage system. In some implementations, the client device 120A-120Z, 210A-210Z, 260A-260Z may append the encryption key to the encrypted compilation and provide a single data packet of the encrypted data to the server 112, 212, 262. In some other implementations, the client device 120A-120Z, 210A-210Z, 260A-260Z may provide the encryption key and the encrypted compilation to the server 112, 212, 262 as separate data packets. In addition, the client devices 120A-120Z, 210A-210Z, 260A-260Z may also provide identification information (e.g., a document identifier and / or a user identifier) ​​and a timestamp (indicating the time when the edit was received) associated with the encrypted data to the server 112, 212, 262. The server 112, 212, 262 may use such identification information and timestamp to store the encrypted data and to determine to which client device 120A-120Z, 210A-210Z, 260A-260Z the encrypted data should be transmitted. Figure 4 10A to 10Z, 210A to 210Z, 260A to 260Z are described in more detail regarding the operation of the servers 112, 212, 262. In the case where the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z are associated with a host or collaboration manager user account, the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z can skip operations 306 and 308 because the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z should wait until a certain condition is met before performing operations 306 and 308, as described below with respect to Figure 3B as described.

[0064] Figure 3BA flow chart of a method 350 for updating an online collaborative document based on encrypted data according to one implementation of the present disclosure is illustrated. The method 350 may be executed by a client-based application running in a web browser of a client device 120A to 120Z, 210A to 210Z, 260A to 260Z, such as using HTML and JavaScript code. The client-based application may be executed by a processing device of the client device 120A to 120Z, 210A to 210Z, 260A to 260Z. The method 350 may be implemented for each client device 120A to 120Z, 210A to 210Z, 260A to 260Z of the cloud-based content management platform 110. In addition, the method 350 may be executed when a user of the client device 120A to 120Z, 210A to 210Z, 260A to 260Z logs into a user account of a cloud storage system provided by a server 112, 212, 262. In another implementation, the method 350 may be executed by a processing device of the client device 112, 210A to 210Z, 260A to 260Z. Figure 1 The security collaboration component 116 of the server 112 executes the method 350. Therefore, the method 350 can be executed by one or more processing devices of the server 112, 212, 262.

[0065] For simplicity of explanation, the method 350 of the present disclosure is illustrated and described as a series of actions. However, the actions according to the present disclosure may occur in various orders and / or simultaneously, and occur together with other actions not presented and described herein. In addition, according to the disclosed subject matter, all illustrated actions may not be required to implement the method 350. In addition, those skilled in the art will understand and appreciate that the method 350 may alternatively be represented as a series of interrelated states via a state diagram or event. In addition, it should be understood that the method 350 disclosed in this specification can be stored on an article (e.g., a computer program accessible from any computer-readable device or storage medium) to facilitate the transportation and delivery of this method to a computing device.

[0066] At operation 352, the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z present a graphical user interface (GUI) for online collaborative editing of a document. The client devices 120A to 120Z, 210A to 210Z, 260A to 260Z may communicate with the user about the document. Figure 3A The GUI may be provided in a manner similar to that described in operation 302. The client devices 120A to 120Z, 210A to 210Z, 260A to 260Z may present a GUI via a web browser that enables a user to edit a document.

[0067] At operation 354, the client device 120A-120Z, 210A-210Z, 260A-260Z receives encrypted data associated with the document from the server 112, 212, 262 of the cloud-based storage system. In one implementation, the encrypted data associated with the document has been received by another client device 120A-120Z, 210A-210Z, 260A-260Z in the same manner as described above with respect to Figure 3A The encrypted data is generated in a manner similar to that described in operation 306 of . Thus, the encrypted data represents edits to a portion of the document. The encrypted data includes edits that have been encrypted using a data encryption key. Edits such as keystrokes and / or icon or menu selections have been made by collaborators of the document. The encrypted data also includes an encryption key - a data encryption key that is encrypted or wrapped based on a master encryption key. The client devices 120A to 120Z, 210A to 210Z, 260A to 260Z may also receive a timestamp associated with the encrypted data. The timestamp may represent the time when the edit was made or the time when the server 112, 212, 262 received the encrypted data from another client device 120A to 120Z, 210A to 210Z, 260A to 260Z.

[0068] At operation 356, the client device 120A-120Z, 210A-210Z, 260A-260Z decrypts the encrypted data. If the client device 120A-120Z, 210A-210Z, 260A-260Z has the master encryption key (as previously received from the key management server 215, 265), the client device 120A-120Z, 210A-210Z, 260A-260Z may decrypt the encryption key using the master encryption key. The client device 120A-120Z, 210A-210Z, 260A-260Z may then decrypt the encrypted edit based on the decrypted key.

[0069] In the event that the client device 120A to 120Z, 210A to 210Z, 260A to 260Z does not already have the master encryption key, the client device 120A to 120Z, 210A to 210Z, 260A to 260Z may request the key management server 215, 265 for decrypting the encryption key included in the encrypted data. Figure 3ASimilar to the key management server 215, 265 of the cloud storage system, the key management server 215, 265 manages encryption and decryption of data encryption keys and is connected only to the client device 120A to 120Z, 210A to 210Z, 260A to 260Z instead of the server 112, 212, 262 of the cloud storage system. In some implementations, the client device 120A to 120Z, 210A to 210Z, 260A to 260Z can provide the encryption key to the key management server 215, 265 as part of the decryption request. The client device 120A to 120Z, 210A to 210Z, 260A to 260Z can also transmit identification information such as a document identifier and / or a user identifier for authorization by the key management server 215, 265. After authorization, the key management server 215, 265 can retrieve a master encryption key corresponding to the received encryption key based on the identification information.

[0070] The key management server 215, 265 may then decrypt the received encryption key using the master encryption key and provide the decrypted key to the client device 120A to 120Z, 210A to 210Z, 260A to 260Z. In some other implementations, the client device 120A to 120Z, 210A to 210Z, 260A to 260Z may request the key management server 215, 265 to provide the master encryption key used to encrypt the key based on the identification information. The key management server 215, 265 may retrieve the master encryption key based on the identification information and transmit the master encryption key to the client device 120A to 120Z, 210A to 210Z, 260A to 260Z. In response, the client device 120A to 120Z, 210A to 210Z, 260A to 260Z may decrypt the encrypted key using the received master encryption key. Once the client device 120A-120Z, 210A-210Z, 260A-260Z has the master encryption key, the client device 120A-120Z, 210A-210Z, 260A-260Z can reuse the same master encryption key to decrypt any encryption keys associated with the same document. In response to obtaining the decryption key (i.e., the data encryption key), the client device 120A-120Z, 210A-210Z, 260A-260Z can use the data encryption key to decrypt the encrypted edits included in the encrypted data.

[0071] In a further implementation, where the client devices 120A-120Z, 210A-210Z, 260A-260Z are associated with a host or collaboration manager user account, the client devices 120A-120Z, 210A-210Z, 260A-260Z may be associated with the host or collaboration manager user account at operation 356. Figure 3A Decrypted edits may be recorded in a manner similar to that described above. For example, the client devices 120A-120Z, 210A-210Z, 260A-260Z may record a log entry including the edit (e.g., a keystroke in a portion of a document, an icon or menu selection of text in a portion of a document), a timestamp indicating the time when the edit was received, a user identifier, and / or a document identifier (e.g., the name of the document).

[0072] In addition, the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z associated with the collaboration manager user account can determine whether to merge or combine the edits received so far. The client devices 120A to 120Z, 210A to 210Z, 260A to 260Z can make this determination based on a time period that has passed since the last merge, which time period can be identified from the log. That is, the client devices 120A to 120Z, 210A to 210Z, 260A-260Z can merge edits periodically. In other implementations, the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z can make this determination based on the number of edits received since the last merge (i.e., the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z can wait until a certain number of edits are received before merging).

[0073] Once the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z determine to merge the edits made to the document by the collaborators, the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z can sort the edits in chronological order using the timestamps of the log entries. The client devices 120A to 120Z, 210A to 210Z, 260A to 260Z can combine the sorted edits into a single edit. For example, the first edit can be to insert a sentence, and the second edit can be to insert a word in the middle of the sentence. Then, the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z can combine the two edits into a single edit, i.e., update the inserted sentence with the inserted word. In some implementations, the client devices 120A-120Z, 210A-210Z, 260A-260Z may prepare a merged edit specific to each collaborator. In this case, the client devices 120A-120Z, 210A-210Z, 260A-260Z may maintain a separate log for each collaborator. In some other implementations, the client devices 120A-120Z, 210A-210Z, 260A-260Z may generate a merged edit for all collaborators.

[0074] In the case of overlapping or conflicting edits with the same or substantially the same timestamp (e.g., within one second), the client devices 120A-120Z, 210A-210Z, 260A-260Z can use a rule set to resolve any conflicts. Examples of overlapping or conflicting edits include an edit to insert a word in a sentence and another edit to delete the sentence. In this case, the client devices 120A-120Z, 210A-210Z, 260A-260Z can apply a rule (e.g., deletion takes precedence over insertion) to remove the sentence from the document.

[0075] Once the client devices 120A-120Z, 210A-210Z, 260A-260Z have generated the merged edit, the client devices 120A-120Z, 210A-210Z, 260A-260Z may use the same methods as described above with respect to Figure 3A The merged edit is encrypted in a manner similar to that described. That is, the client device 120A to 120Z, 210A to 210Z, 260A to 260Z associated with the collaborative manager user account generates a data encryption key and encrypts the merged edit with the data encryption key. The client device 120A to 120Z, 210A to 210Z, 260A to 260Z can then request the key management server 215, 265 to encrypt or wrap the data encryption key. Once the client device 120A to 120Z, 210A to 210Z, 260A to 260Z obtains the encrypted edit and the encryption key, the client device 120A to 120Z, 210A to 210Z, 260A to 260Z can provide the encrypted data to the server 112, 212, 262 of the cloud storage system. In the event that the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z have generated a collaborator-specific merged edit, the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z may also provide a user identifier of the collaborator regarding the target destination address so that the server 112, 212, 262 can determine to which collaborator to provide the encrypted data.

[0076] At operation 358, the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z update the document provided on the GUI based on the decrypted data. For example, the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z can apply the decrypted edits to the local version of the document maintained by the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z so that the local version can be updated to the latest version. The edit can be a merged edit generated by the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z of the collaboration manager, reflecting the edits made by the collaborators of the document. In the case where the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z are associated with the host or collaboration manager user account, the edit will be made by another collaborator.

[0077] In one implementation, when applying the decrypted edits to the local version of the document, the client devices 120A-120Z, 210A-210Z, 260A-260Z may identify conflicts or overlapping edits between edits that the user of the client devices 120A-120Z, 210A-210Z, 260A-260Z has made and the decrypted edits. For example, the user of the client devices 120A-120Z, 210A-210Z, 260A-260Z may add words to a sentence in the document version (i.e., a local edit), but the decrypted edit may be a simultaneous or substantially simultaneous deletion of the sentence. The client devices 120A-120Z, 210A-210Z, 260A-260Z may determine the timing of the local edits based on the log entries including the edits made by the user to the local version, and determine the timing of the decrypted edits based on the timestamp received in association with the encrypted data at operation 354. The client devices 120A-120Z, 210A-210Z, 260A-260Z may use a rule set to resolve conflicts. For example, the client devices 120A-120Z, 210A-210Z, 260A-260Z may apply a rule that prioritizes deletions over insertions. As a result, when updating a version of a document, the client devices 120A-120Z, 210A-210Z, 260A-260Z may undo or remove edits that have been applied and apply the decrypted edits instead.

[0078] Figure 4 A flowchart of a method 400 for providing encrypted data to collaborators according to an implementation of the present disclosure is shown. Figure 1The method 400 is performed by the security collaboration component 116 of the server 112, 212, 262. The method 400 can be performed by one or more processing devices of the server 112, 212, 262. The method 400 can be implemented for each client device 120A to 120Z, 210A to 210Z, 260A to 260Z of the cloud-based content management platform 110.

[0079] For simplicity of explanation, the method 400 of the present disclosure is illustrated and described as a series of actions. However, the actions according to the present disclosure may occur in various orders and / or simultaneously, and occur together with other actions not presented and described herein. In addition, according to the disclosed subject matter, all illustrated actions may not be required to implement the method 400. In addition, those skilled in the art will understand and appreciate that the method 400 may alternatively be represented as a series of interrelated states via a state diagram or event. In addition, it should be understood that the method 400 disclosed in this specification can be stored on an article (e.g., a computer program accessible from any computer-readable device or storage medium) to facilitate the transportation and transfer of this method to a computing device.

[0080] At operation 402, the cloud storage system (i.e., a processing device of the cloud storage system) receives encrypted data from client devices 120A to 120Z, 210A to 210Z, 260A to 260Z. The encrypted data represents an edit to a portion of a document. Examples of edits or changes may include keystrokes in a portion of a document (at a particular index or location) and icons or menu selections that change the format of text in a portion of a document. The encrypted data may include encrypted edits and encryption keys. The encrypted edits correspond to edits that are encrypted using a data encryption key. The encryption key corresponds to a data encryption key that is encrypted or wrapped using a master encryption key. Because the data encryption key is encrypted using the master encryption key and the processing device does not have access to the master encryption key, the processing device cannot decrypt the (encrypted) edits. Therefore, the cloud storage system cannot access any portion of the document in decrypted form.

[0081] The cloud storage system may also receive identification information for the encrypted data, such as a user identifier associated with the client device 120A-120Z, 210A-210Z, 260A-260Z (e.g., username@domain.com) and a document identifier of the document associated with the edit (e.g., the name of the document). In some implementations, the cloud storage system may receive a timestamp indicating when the edit was received at the client device 120A-120Z, 210A-210Z, 260A-260Z. In the event that the cloud storage system does not receive a timestamp, the cloud storage system may generate a timestamp indicating when the encrypted data was received. The cloud storage system may use such identification information and timestamps to store the encrypted data and to determine to which client device 120A-120Z, 210A-210Z, 260A-260Z the encrypted data should be transmitted.

[0082] In response to receiving the encrypted data, the cloud storage system may store the encrypted data in a data repository of the cloud-based storage system in association with the identification information and / or a timestamp. Based on the timestamp, the cloud storage system may store the encrypted data in a chronological order in encrypted data with the same document identifier. Thus, the cloud storage system may store all edits made to a document since the document was created in encrypted form. Such edits will effectively represent the corresponding document. To this end, the cloud-based storage system stores multiple documents in encrypted form.

[0083] At operation 404, the cloud storage system determines a document associated with the encrypted data. In one implementation, the cloud storage system may identify which document is associated with the encrypted data based on identification information (i.e., document identifiers) received from the client devices 120A-120Z, 210A-210Z, 260A-260Z. In the event that the cloud storage system has not yet received the document identifier, the cloud storage system may request the identification information from the client devices 120A-120Z, 210A-210Z, 260A-260Z.

[0084] At operation 406, the cloud storage system determines the user accounts of the collaborators of the document. In one implementation, the cloud storage system may determine a user identifier representing a user account and associated with a document identifier of a determined document from a data repository. The data repository may store a table listing document identifiers with associated user identifiers. The data repository may be included in the cloud storage system. For each document identifier in the data repository, a user account having access (e.g., viewing or editing) to a document associated with the corresponding document identifier may be recorded. Therefore, the user account associated with the client device 120A to 120Z, 210A to 210Z, 260A to 260Z should be included in the determined user account (because the edit represented by the encrypted data received at operation 402 is made by a user of the user account associated with the client device 120A to 120Z, 210A to 210Z, 260A to 260Z).

[0085] In a further implementation, the cloud storage system may determine a user account assigned with a master or collaboration manager role. The collaboration manager role coordinates online collaborative editing with the cloud storage system by ensuring that each collaborator has access to the same or substantially the same version of a document. In the data repository, for each user identifier associated with a document identifier, it may be recorded whether the corresponding user identifier was assigned with a master or collaboration manager role in the online collaborative editing of the document associated with the corresponding document identifier. Therefore, the cloud storage system may determine the collaboration manager role user account from the data repository based on the document identifier.

[0086] The respective users may not be aware of the role, as all processes associated with the assignment of the role may be implemented in the background by the cloud storage system and the servers 112, 212, 262. The cloud storage system may coordinate with the client devices 120A-120Z, 210A-210Z, 260A-260Z associated with the collaboration manager role to ensure that the collaborators have access to the same or substantially the same version of the document. For example, when the cloud storage system receives encrypted data from a client device 120A-120Z, 210A-210Z, 260A-260Z that is not associated with the collaboration manager role, the cloud storage system may route the encrypted data to the client device 120A-120Z, 210A-210Z, 260A-260Z associated with the collaboration manager role. The client devices 120A to 120Z, 210A to 210Z, 260A to 260Z associated with the collaboration manager role may merge the edits made by the collaborators (after decrypting the encrypted data) into the encrypted data sent to the cloud storage system. The cloud storage system then distributes the encrypted data received from the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z associated with the collaboration manager role to other collaborators.

[0087] In some embodiments, the cloud storage system should assign only one user identifier to the role. Initially, the cloud storage system can configure the user account of the user who created the document to perform the collaboration manager role. The cloud storage system can assign the collaboration manager role to the user account and record it as such in the data repository. In some cases, the cloud storage system can change the role assignment.

[0088] For example, when the cloud storage system detects that the user with the collaboration manager user account of the current document exits the cloud storage system, the cloud storage system can reassign the role to another collaborator. In another example, when the cloud storage system detects that the response time of the client device 120A to 120Z, 210A to 210Z, 260A to 260Z associated with the collaboration manager user account meets a predetermined threshold condition (e.g., the client device 120A to 120Z, 210A to 210Z, 260A to 260Z associated with the collaboration manager does not provide a response for more than 2 seconds), the cloud storage system can reassign the role to another collaborator. An example of a response time may include a period of time from when the cloud storage system has provided encrypted data to the client device 120A to 120Z, 210A to 210Z, 260A to 260Z of the collaboration manager until the cloud storage system has received another encrypted data from the client device 120A to 120Z, 210A to 210Z, 260A to 260Z of the collaboration manager. Additionally or alternatively, the response time may be any period of time taken for the client device 120A to 120Z, 210A to 210Z, 260A to 260Z of the collaboration manager to respond to a communication from the cloud storage system. The cloud storage system may reassign roles to any other collaborators currently logged into the cloud storage system.

[0089] At operation 408, the cloud storage system provides encrypted data to other client devices 120A to 120Z, 210A to 210Z, 260A to 260Z, each of which is associated with a corresponding user account, excluding the user account associated with the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z. That is, the cloud storage system does not send the encrypted data back to the sender. In one implementation, the cloud storage system can determine whether the client device 120A to 120Z, 210A to 210Z, 260A to 260Z that sent the encrypted data is assigned a collaboration manager role. If the client device 120A to 120Z, 210A to 210Z, 260A to 260Z is associated with a collaboration manager user account, the encrypted data represents an edit made to a portion of the document by a collaborator of the document. Therefore, such encrypted data should be distributed to collaborators other than the collaboration manager. On the other hand, if the client device 120A-120Z, 210A-210Z, 260A-260Z is not associated with the collaboration manager role, the encrypted data represents edits made to a portion of the document by the respective user of the client device 120A-120Z, 210A-210Z, 260A-260Z. Therefore, the encrypted data may be routed to the client device 120A-120Z, 210A-210Z, 260A-260Z associated with the collaboration manager role so that the client device 120A-120Z, 210A-210Z, 260A-260Z may merge the edits from the various collaborators.

[0090] The cloud storage system may determine whether the client device 120A-120Z, 210A-210Z, 260A-260Z is associated with the collaboration manager role based on the user identifier of the client device 120A-120Z, 210A-210Z, 260A-260Z according to the data stored in the data repository. At operation 402, the cloud storage system may receive a user identifier associated with the encrypted data. In the event that the cloud storage system has not yet received the user identifier, the cloud storage system may request the client device 120A-120Z, 210A-210Z, 260A-260Z to provide the user identifier.

[0091] In the event that the cloud storage system determines that the client device 120A-120Z, 210A-210Z, 260A-260Z is associated with the collaboration manager role, the cloud storage system may determine collaborators other than the collaboration manager from the user accounts of the collaborators of the document determined at operation 406. The cloud storage system may then transmit the encrypted data to the client devices 120A-120Z, 210A-210Z, 260A-260Z associated with the other collaborators of the document. Thus, the cloud storage system may route the merged edits from the collaboration manager to the other collaborators so that each collaborator can see all changes made to the document and access the same or substantially the same version of the document.

[0092] In another implementation, the cloud storage system may determine from the encrypted data or any other data received with the encrypted data whether there is any information (e.g., a user identifier) ​​about the target destination address of the encrypted data provided by the collaboration manager for a particular collaborator. If the cloud storage system determines this information, the cloud storage system may only provide the encrypted data to the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z associated with the target destination address.

[0093] In the event that the cloud storage system determines that the client device 120A-120Z, 210A-210Z, 260A-260Z that sent the encrypted data is not associated with the collaboration manager role, then the cloud storage system can determine the user account associated with the collaboration manager role from the user accounts of the collaborators of the document determined at operation 406. To this end, the cloud storage system can route the edits made by the collaborators to the collaboration manager client device 120A-120Z, 210A-210Z, 260A-260Z so that the collaboration manager can merge the edits that will be later distributed to other collaborators. As a result, the cloud storage system can effectively ensure that the user edits the same or substantially the same version of the document as other collaborators.

[0094] Figure 5 A block diagram of an example computing system operating in accordance with one or more aspects of the present disclosure is depicted. In various illustrative examples, computer system 500 may correspond to Figure 1 The computer system 500 may be any one of the computing devices within the system architecture 100. In one implementation, the computer system 500 may be the server 112. In another implementation, the computer system 500 may be each of the client devices 120A to 120Z, 210A to 210Z, 260A to 260Z.

[0095] In some implementations, the computer system 500 can be connected (e.g., via a network, such as a local area network (LAN), an intranet, an extranet, or the Internet) to other computer systems. The computer system 500 can operate in the capacity of a server or client computer in a client-server environment, or as a peer computer in a peer-to-peer or distributed network environment. The computer system 500 can be a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a cellular phone, a network appliance, a server, a network router, a switch or a bridge, or any device capable of executing a set of instructions (sequentially or otherwise) that specifies the actions to be taken by the device. In addition, the term "computer" shall include any collection of computers that individually or jointly execute a set of instructions (or multiple sets) to perform any one or more of the methods described herein.

[0096] In another aspect, computer system 500 may include a processing device 502 , volatile memory 504 (eg, random access memory (RAM)), nonvolatile memory 506 (eg, read only memory (ROM) or electrically erasable programmable ROM (EEPROM)), and data storage device 516 , which may communicate with each other via bus 508 .

[0097] The processing device 502 may be provided by one or more processors, such as a general purpose processor (e.g., a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, a microprocessor that implements other types of instruction sets, or a microprocessor that implements a combination of instruction set types) or a special purpose processor (e.g., an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), or a network processor).

[0098] The computer system 500 may also include a network interface device 522. The computer system 500 may also include a video display unit 510 (eg, LCD), an alphanumeric input device 512 (eg, keyboard), a cursor control device 514 (eg, mouse), and a signal generating device 520.

[0099] The data storage device 516 may include a non-transitory computer-readable storage medium 524 on which instructions 526 encoding any one or more of the methods or functions described herein may be stored, including implementing Figure 1 The security collaboration component 116 is used to implement instructions of the methods described herein.

[0100] The instructions 526 may also reside, completely or partially, within the volatile memory 504 and / or the processing device 502 during execution by the computer system 500, and thus, the volatile memory 504 and the processing device 502 may also constitute machine-readable storage media.

[0101] Although the computer-readable storage medium 524 is shown as a single medium in the illustrative example, the term "computer-readable storage medium" shall include a single medium or multiple media (e.g., a centralized or distributed database, and / or associated caches and servers) that store one or more sets of executable instructions. The term "computer-readable storage medium" shall also include any tangible medium that can store or encode a set of instructions for execution by a computer, the set of instructions causing the computer to perform any one or more of the methods described herein. The term "computer-readable storage medium" shall include, but is not limited to, solid-state memories, optical media, and magnetic media.

[0102] In the foregoing description, numerous details are set forth. However, it will be apparent to those of ordinary skill in the art who benefit from the present disclosure that the present disclosure may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form rather than in detail in order to avoid obscuring the present disclosure.

[0103] Some parts of the specific description have been presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means by which those skilled in the art of data processing most effectively convey the substance of their work to other persons skilled in the art. An algorithm is here and generally considered to be a self-consistent sequence of steps leading to a desired result. These steps are those steps that require physical manipulation of physical quantities. Typically, although not necessarily, these quantities take the form of electrical or magnetic signals that can be stored, transferred, combined, compared, and otherwise manipulated. For commonly used reasons, it has proven convenient to sometimes refer to these signals as bits, values, elements, symbols, characters, terms, numbers, etc.

[0104] It should be remembered, however, that all of these terms and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless otherwise specifically indicated clearly from the following discussion, it should be understood that throughout this description, discussions utilizing terms such as "receiving," "presenting," "generating," "updating," "providing," "determining," "encrypting," "decrypting," etc. refer to the actions and processes of a computer system or similar electronic computing device that manipulates and transforms data represented as physical (e.g., electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system's memories or registers or other such information storage, transmission, or display devices.

[0105] For simplicity of explanation, the method is illustrated and described as a series of actions. However, the actions according to the present disclosure may occur in various orders and / or simultaneously, and occur together with other actions not presented and described herein. In addition, according to the disclosed subject matter, all illustrated actions may not be required to implement the method. In addition, those skilled in the art will understand and appreciate that the method may alternatively be represented as a series of interrelated states via a state diagram or event. In addition, it should be understood that the methods disclosed in this specification can be stored on an article to facilitate the transportation and transfer of such methods to a computing device. The term "article" as used herein is intended to encompass a computer program accessible from any computer-readable device or storage medium.

[0106] Certain implementations of the present disclosure also relate to an apparatus for performing the operations herein. The apparatus may be constructed for the intended purpose, or it may include a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer-readable storage medium, such as but not limited to any type of disk, including a floppy disk, an optical disk, a CD-ROM and a magneto-optical disk, a read-only memory (ROM), a random access memory (RAM), an EPROM, an EEPROM, a magnetic card or an optical card, or any type of medium suitable for storing electronic instructions.

[0107] References throughout this specification to "an implementation" or "an implementation" mean that a particular feature, structure, or characteristic described in conjunction with the implementation is included in at least one implementation. Therefore, the phrases "in one implementation" or "in an implementation" appearing in various places throughout this specification do not necessarily all refer to the same implementation. In addition, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or". In addition, the words "example" or "exemplary" are used herein to mean used as an example, instance, or illustration. Any aspect or design described herein as "exemplary" is not necessarily to be construed as being preferred or superior to other aspects or designs. Rather, the use of the words "example" or "exemplary" is intended to present concepts in a concrete way.

[0108] It should be understood that the above description is intended to be illustrative, rather than restrictive. After reading and understanding the above description, many other implementations will be apparent to those skilled in the art. Therefore, the scope of the present disclosure should be determined with reference to the attached claims and the full range of equivalent forms enjoyed by such claims.

Claims

1. A method comprising: receiving, at a first server of a cloud-based storage system storing a plurality of documents in encrypted form, the edit encrypted using a data encryption key, the data encryption key being associated with a second server independent of the first server; determining, at the first server, which document of the plurality of documents stored in encrypted form is associated with the encrypted compilation, wherein the first server is unable to decrypt both the document in the encrypted form and the encrypted compilation encrypted using the data encryption key; determining, at the first server, a plurality of user accounts of collaborators of the document, the plurality of user accounts including a first user account associated with a first client device; as well as The encrypted compilation is provided by the first server to one or more other client devices, each of which is associated with one of the plurality of user accounts.

2. The method according to claim 1, further comprising: receiving the data encryption key from the first client device, the data encryption key being encrypted based on a master encryption key, wherein the first server does not have access to the master encryption key; as well as The encrypted data encryption key is provided to the one or more other client devices.

3. The method according to claim 2, wherein: The master encryption key is provided by the second server that is not in communication with the first server but is in communication with the first client device and the one or more other client devices.

4. The method according to claim 2, further comprising: A second user account among the collaborator's multiple user accounts is configured to coordinate with the first server for collaborative editing of the document, wherein a second client device associated with the second user account will chronologically combine edits made to the document by the collaborator and generate encrypted data based on the combined edits.

5. The method according to claim 4, wherein: The determination of the plurality of user accounts of the collaborators of the document includes determining that the first user account corresponds to a user account other than the second user account; and The providing of the encrypted data encryption key includes providing the encrypted compilation to the second client device associated with the second user account, the second client device being one of the one or more other client devices.

6. The method according to claim 4, wherein: The determination of the plurality of user accounts of the collaborators of the document includes determining that the first user account corresponds to the second user account; and The provision of the encrypted data encryption key includes providing the encrypted edit to the one or more other client devices each associated with a user account of the plurality of user accounts other than the second user account, wherein the encrypted edit corresponds to the encrypted data.

7. The method according to claim 3, wherein: The first client device is used to perform an operation, and the operation includes: generating the data encryption key; encrypting the compilation based on the data encryption key; obtaining an encrypted data encryption key based on encrypting the data encryption key using a master encryption key provided by the second server; and The encrypted compilation and the encrypted data encryption key are provided to the first server.

8. A method comprising: providing a graphical user interface GUI for online collaborative editing of a document in association with a first server of a cloud-based storage system, wherein the cloud-based storage system stores a plurality of documents including the document in encrypted form; receiving, via the GUI, an edit to a portion of the document; encrypting the edits to the portion of the document based on a data encryption key associated with a second server independent of the first server; generating encrypted data representing the edits to the portion of the document, wherein the encrypted data includes the encrypted edits to the portion of the document; as well as The encrypted data is provided to the first server that is unable to decrypt (i) the document in the encrypted form and (ii) the encrypted edit to the portion of the document.

9. The method according to claim 8, wherein: The generation of the encrypted data includes: generating the data encryption key; encrypting the compilation based on the data encryption key; obtaining an encrypted data encryption key generated based on encrypting the data encryption key using a master encryption key provided by the second server; and The encrypted compilation is combined with the encrypted data encryption key to generate the encrypted data.

10. The method according to claim 8, further comprising: receiving, from the first server of the cloud-based storage system, second encrypted data representing a second edit made to the portion of the document by a collaborator of the document, wherein the second encrypted data includes the second edit encrypted based on a second data encryption key, and the second data encryption key is encrypted based on the master encryption key; obtaining the second compilation from the second encrypted data by decrypting the encrypted second data encryption key using the master encryption key and decrypting the encrypted second compilation using the decrypted second data encryption key; as well as The document provided on the GUI is updated based on the second edit.

11. The method according to claim 10, further comprising: receiving, from the first server of the cloud-based storage system, third encrypted data representing a third edit made to the portion of the document by another collaborator of the document; generating fourth encrypted data based on a chronological combination of the second edit and the third edit; as well as The fourth encrypted data is provided to the first server of the cloud-based storage system.

12. A method comprising: providing, at a first client device in association with a first server of a cloud-based storage system, a graphical user interface GUI for online collaborative editing of a document, wherein the cloud-based storage system stores a plurality of documents including the document in encrypted form; receiving, at the first client device via the GUI, encrypted edits to a portion of the document, wherein the encrypted edits to the portion of the document were encrypted by a second client device using a data encryption key associated with a second server independent of the first server, and wherein the first server is unable to decrypt the encrypted form of the document and the encrypted edits to the portion of the document; decrypting, at the first client device, the encrypted edit to the portion of the document; as well as The document including the decrypted redaction is presented at the GUI on the first client device.

13. The method according to claim 12, further comprising: receiving an encrypted data encryption key generated based on encrypting the data encryption key using a master encryption key provided by the second server; as well as The encrypted data encryption key is decrypted.

14. The method according to claim 13, wherein: Decrypting the encrypted compilation comprises: The encrypted compilation is decrypted using the decrypted data encryption key.

15. A non-transitory computer-readable storage medium comprising instructions for a server, the instructions, when executed by a processing device, causing the processing device to perform operations comprising: receiving, at a first server of a cloud-based storage system storing a plurality of documents in encrypted form, the edit encrypted using a data encryption key, the data encryption key being associated with a second server independent of the first server; determining, at the first server, which document of the plurality of documents stored in encrypted form is associated with the encrypted compilation, wherein the first server is unable to decrypt both the document in the encrypted form and the encrypted compilation encrypted using the data encryption key; determining, at the first server, a plurality of user accounts of collaborators of the document, the plurality of user accounts including a first user account associated with a first client device; as well as The encrypted compilation is provided by the first server to one or more other client devices, each of which is associated with one of the plurality of user accounts.

16. The non-transitory computer-readable storage medium of claim 15, the operations further comprising: receiving the data encryption key from the first client device, the data encryption key being encrypted based on a master encryption key, wherein the first server does not have access to the master encryption key; as well as The encrypted data encryption key is provided to the one or more other client devices.

17. The non-transitory computer-readable storage medium of claim 16, wherein: The master encryption key is provided by the second server that is not in communication with the first server but is in communication with the first client device and the one or more other client devices.

18. The non-transitory computer-readable storage medium of claim 16, the operations further comprising: A second user account among the collaborator's multiple user accounts is configured to coordinate with the first server for collaborative editing of the document, wherein a second client device associated with the second user account will chronologically combine edits made to the document by the collaborator and generate encrypted data based on the combined edits.

19. The non-transitory computer-readable storage medium of claim 18, wherein: The determination of the plurality of user accounts of the collaborators of the document includes determining that the first user account corresponds to a user account other than the second user account; and The providing of the encrypted data encryption key includes providing the encrypted compilation to the second client device associated with the second user account, the second client device being one of the one or more other client devices.

20. The non-transitory computer-readable storage medium of claim 18, wherein: The determination of the plurality of user accounts of the collaborators of the document includes determining that the first user account corresponds to the second user account; and The provision of the encrypted data encryption key includes providing the encrypted edit to the one or more other client devices each associated with a user account of the plurality of user accounts other than the second user account, wherein the encrypted edit corresponds to the encrypted data.

21. The non-transitory computer-readable storage medium of claim 17, wherein: The first client device is used to perform an operation, and the operation includes: generating the data encryption key; encrypting the compilation based on the data encryption key; obtaining an encrypted data encryption key based on encrypting the data encryption key using a master encryption key provided by the second server; and The encrypted compilation and the encrypted data encryption key are provided to the first server.

22. A system comprising: Memory; as well as a processing device coupled to the memory, the processing device configured to perform operations comprising: receiving, at a first server of a cloud-based storage system storing a plurality of documents in encrypted form, the edit encrypted using a data encryption key, the data encryption key being associated with a second server independent of the first server; determining, at the first server, which document of the plurality of documents stored in encrypted form is associated with the encrypted compilation, wherein the first server is unable to decrypt both the document in the encrypted form and the encrypted compilation encrypted using the data encryption key; determining, at the first server, a plurality of user accounts of collaborators of the document, the plurality of user accounts including a first user account associated with a first client device; as well as The encrypted compilation is provided by the first server to one or more other client devices, each of which is associated with one of the plurality of user accounts.

23. The system of claim 22, the operations further comprising: receiving the data encryption key from the first client device, the data encryption key being encrypted based on a master encryption key, wherein the first server does not have access to the master encryption key; as well as The encrypted data encryption key is provided to the one or more other client devices.

24. The system of claim 23, wherein: The master encryption key is provided by the second server that is not in communication with the first server but is in communication with the first client device and the one or more other client devices.

25. The system of claim 23, the operations further comprising: A second user account among the collaborator's multiple user accounts is configured to coordinate with the first server for collaborative editing of the document, wherein a second client device associated with the second user account will chronologically combine edits made to the document by the collaborator and generate encrypted data based on the combined edits.

26. The system of claim 25, wherein: The determination of the plurality of user accounts of the collaborators of the document includes determining that the first user account corresponds to a user account other than the second user account; and The providing of the encrypted data encryption key includes providing the encrypted compilation to the second client device associated with the second user account, the second client device being one of the one or more other client devices.

27. The system of claim 25, wherein: The determination of the plurality of user accounts of the collaborators of the document includes determining that the first user account corresponds to the second user account; and The provision of the encrypted data encryption key includes providing the encrypted edit to the one or more other client devices each associated with a user account of the plurality of user accounts other than the second user account, wherein the encrypted edit corresponds to the encrypted data.

28. The system of claim 24, wherein: The first client device is used to perform an operation, and the operation includes: generating the data encryption key; encrypting the compilation based on the data encryption key; obtaining an encrypted data encryption key based on encrypting the data encryption key using a master encryption key provided by the second server; and The encrypted compilation and the encrypted data encryption key are provided to the first server.