US20230325517A1 - Securing data in multitenant environment - Google Patents
Securing data in multitenant environment Download PDFInfo
- Publication number
- US20230325517A1 US20230325517A1 US18/208,593 US202318208593A US2023325517A1 US 20230325517 A1 US20230325517 A1 US 20230325517A1 US 202318208593 A US202318208593 A US 202318208593A US 2023325517 A1 US2023325517 A1 US 2023325517A1
- Authority
- US
- United States
- Prior art keywords
- user
- index
- encryption key
- data
- index data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/083—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
Definitions
- the subject matter disclosed herein generally relates to methods, systems, and machine-readable storage media for securing data.
- the transcript data is often critical, so it is often encrypted before saving to permanent storage. Typical search tools do not work with encrypted data so new tools are needed for searching the encrypted transcripts.
- the data from multiple clients may be stored in the same database. Measures must be put in place to ensure that clients cannot access the data from other clients.
- a communications service provider provides services to support customer centers for companies to interact with their customers.
- the interactions with customer include conversations that are sometimes recorded, transcribed to text, encrypted, and saved in a database.
- an index is created for the transcripts.
- the index data for each user is kept in a separate index, which is stored in a separate area of the database, such as in a folder of a file system.
- the index data is encrypted with a separate key for each client in order to protect the index data, such that each client can only access its own index data.
- One general aspect includes a method that includes an operation for detecting a write request to write index data to storage.
- the write request is from a first user from a group of users, and the storage is configured to store index data for the group of users.
- the method includes operations for authenticating that the first user is approved for access to the storage, and for identifying a first encryption key for the first user, where each user from the group of users has a separate encryption key.
- the method includes encrypting the index data with the first encryption key and storing the encrypted index data in the storage.
- FIG. 1 shows an architecture of a communications service provider that provides call center services, according to some example embodiments.
- FIG. 2 illustrates a system for searching encrypted data, according to some example embodiments.
- FIG. 3 illustrates the use of separate indexes for storing data, according to some example embodiments.
- FIG. 4 illustrates the encryption of index data using per-customer encryption key, according to some example embodiments.
- FIG. 5 is a flowchart of a method for processing a write request, according to some example embodiments.
- FIG. 6 is a flowchart of a method for processing a search request, according to some example embodiments.
- FIG. 7 is a flowchart of a method for secure data encryption in a multi-tenant service platform, according to some example embodiments.
- FIG. 8 is a block diagram illustrating an example of a machine upon or by which one or more example process embodiments described herein may be implemented or controlled.
- Example methods, systems, and computer programs are directed to secure data encryption in a multi-tenant service platform. Examples merely typify possible variations. Unless explicitly stated otherwise, components and functions are optional and may be combined or subdivided, and operations may vary in sequence or be combined or subdivided. In the following description, for purposes of explanation, numerous specific details are set forth to provide a thorough understanding of example embodiments. It will be evident to one skilled in the art, however, that the present subject matter may be practiced without these specific details.
- FIG. 1 shows an architecture of a communications service provider 102 that provides call center services, according to some example embodiments.
- a communications service provider 102 provides call-center services to facilitate voice and data communications between customers 118 and agents 114 .
- the agents 114 may work for a plurality of companies that use the services of the communications service provider 102 .
- the customers 118 may establish video and voice conversations to communicate with the agents 114 , such as for requesting support for a product or service, utilizing client devices that interact with customer devices.
- client devices establish a communications session, also referred to herein as a conversation, with the customer devices, and the communications session allows the client devices to communicate with the customer devices by sharing any of text, audio, video, files, etc.
- a conversation refers to a series of communication exchanges between two entities, where the communication exchanges occur close in time (e.g., the conversation includes interaction taking place within a fifteen minute window, although other time periods are possible, such as in the range from 30 seconds to thirty minutes).
- the communication exchange includes exchanging one or more of text messages, audio, video, documents, files, etc.
- the customers 118 and agents 114 communicate with the communications service provider 102 via direct connections or through a network 116 , such as the Internet or a private network connection.
- a network 116 such as the Internet or a private network connection.
- the communications service provider 102 routes the video or voice communications to one of the agents 114 from that company.
- the conversation manager 112 routes the call to the customer 118 .
- a conversation manager 112 records the conversations (e.g., voice data) in a conversation database 110 of the communications service provider 102 .
- the conversation manager 112 records audio data transmitted as part of communications sessions established between the client device of the customer 118 and the customer device used by the agent 114 .
- the communications service provider 102 includes a video processor 104 that processes video calls, a voice processor 106 that processes voice calls, and a communications router 108 that routes the communication data between customers 118 and agents 114 .
- the conversation manager 112 manages the conversations, such as to establish, monitor, and terminate conversations, as well as managing the storage of conversation data when requested by the client of the communications service provider 102 , e.g., to review conversations of the agents 114 performing work for the client.
- the clients may use the conversation data to manage, monitor, and improve operations, such as to monitor for compliance by an agent or to determine when a follow-up call is requested to further a sales process.
- the data stored in the conversation database 110 is encrypted, and tools for searching encrypted data are provided.
- FIG. 2 illustrates a system for searching encrypted data, according to some example embodiments.
- Voice data 202 from conversations is analyzed by a speech recognition program 206 that converts the audio from the conversation into text-from-voice data 208 .
- a storage module 222 takes the text-from-voice data 208 , or text data 204 from a conversation (e.g., from a chat), an encryption program 224 encrypts this data, and the encrypted data is stored in the conversation database 110 .
- An indexer 226 a program in the storage module 222 , indexes the data being stored and creates the data for the index 210 .
- the index 210 is a data structure that improves the speed of data retrieval operations on a database table at the cost of additional writes and storage space to maintain the index data structure. Indexes are used to quickly locate data without having to search every record in a database every time a database is accessed.
- the index 210 is then used to perform searches on the data. Without the index 210 , searching for encrypted data would be almost impossible or require a large amount of computing resources.
- the index 210 is searched at operation 214 .
- a search for “John” is received, and the index 210 identifies the one or more records in the conversation database 110 that contain the word “John.”
- the corresponding data in the one or more records is decrypted 218 .
- the identified records are searched and the results 220 of the search are presented to the requester.
- complex requests may be processed (e.g., containing multiple words) and these complex requests are also processed utilizing the index 210 , e.g., to identify the records that contain all the words in the request.
- the index 210 By using the index 210 , the system enables the user to quickly search through a large number of records containing conversation data.
- the data from the index 210 is not encrypted (e.g., may include human-readable text); therefore, a malicious user having access to the index 210 may obtain information related to the conversation database 110 , such as names of individuals, personal information, etc.
- FIG. 3 illustrates the use of separate indexes for storing data, according to some example embodiments.
- a separate index 304 is maintained for each user.
- the index data for each user is kept in a separate addressable area within the disk 410 ( FIG. 4 ), such as within a folder of a directory structure or a partition within the disk 410 . This way, the data for the different users 316 is separated to minimize the risk of enabling one of the users to access the data from another user.
- each user 316 represents a client of the communications service provider, and each user 316 is a separate account associated with one of the clients.
- Each search request 212 includes information about the account used to access the conversation data, e.g., user id for the account.
- the index for the user 316 is selected at operation 306 , and then the user's index 304 is used for the search request.
- the data is stored in index 1 corresponding to user 1, and the search request from user 1 will utilize index 1.
- Using separate indexes helps lower the risk of unauthorized data. However, there is still a risk that a user may gain access to the data in an unauthorized section of the conversation database 110 (e.g., due to a software bug, a user providing an incorrect address on disk). Note that the data for all the users is mingled in the conversation database 110 . Here, if all users utilize the same encryption key for the conversation database (although a different encryption key for the index), a user could potentially decrypt the data of another user if the user gained access to the database.
- FIG. 4 illustrates the encryption of index data using a per-customer encryption key, according to some example embodiments.
- the illustrated example shows how the data for user 1 is indexed and stored on disk 410 , according to some example embodiments.
- each record of the database includes information about one conversation, such as the text of the conversation.
- the index data 404 includes information regarding indexed values (e.g., words in the text), and the index data 404 provides the location where the indexed value is found in the database, including the one or more records and the location within each record.
- the index may be organized in the form of a logical tree, and each word may correspond to one of the nodes in the tree. Other structures for the index may also be used.
- the indexer 226 sends the data to be stored in disk 410 .
- An index-data encrypter/decrypter 406 processes the write request and it appears to the indexer 226 as an interface to write the index data 404 to disk.
- the read and write requests from the indexer 226 are intercepted by the index-data encrypter/decrypter 406 .
- the indexer 226 sends an address for storing/reading the data and the index-data encrypter/decrypter 406 determines which index 304 is associated with this call, and then which user is associated with the call.
- index-data encrypter/decrypter 406 may be utilized with any indexing tool because it is transparent to the program that performs the indexing.
- the index data 404 is encrypted before being saved to disk 410 . Additionally, the index data for each user 316 is kept in a separate structure within the disk 410 , such as within a different directory of a file system. Therefore, the index data for the different users is separated in disk 410 .
- each user 316 has a different key 414 , which is different from the encryption key utilized to encrypt the conversation data.
- a key manager 412 manages the user keys 414 . When a write operation is detected, the key manager 412 identifies the user associated with the write and retrieves the corresponding user key, such as key 420 for user 1.
- a user authenticator manages the authentication procedures for the users 316 , which includes corresponding user IDs 418 and one or more validation methods (e.g., user password, double authentication).
- the user authenticator 416 validates the user requesting the write operation. If the user is authenticated, then the write request may proceed, but if the user is not authenticated, the write operation is terminated (e.g., error message returned indicating write operation failed).
- the index-data encrypter/decrypter 406 receives the key 420 from the key manager 412 and uses this key to encrypt the index data 404 , resulting in encrypted index node data 408 , which is then stored in disk 410 within the section reserved for user 1.
- the encrypted index node data 408 is not human-readable; therefore, if the wrong user would gain access to the area in disk 410 of another user, the wrong user would not be able to read the index data because the wrong user does not have access to the right encryption/decryption key 414 .
- the reverse takes place.
- the user authenticator 416 validates the requester.
- the key manager 412 provides the user key 420 to the index-data encrypter/decrypter 406 .
- the index-data encrypter/decrypter 406 then decrypts the encrypted index node data 408 and returns the decrypted index data 404 to the indexer 226 .
- the authentication and encryption of the index data 404 is transparent to the indexer 226 , appearing that the read request of the index data 404 returns the requested index data 404 in clear form.
- the conversation data may include personal information, such as people's names and phone numbers.
- personal information such as people's names and phone numbers.
- FIG. 5 is a flowchart of a method 500 for processing a write request, according to some example embodiments. While the various operations in this flowchart are presented and described sequentially, one of ordinary skill will appreciate that some or all of the operations may be executed in a different order, be combined or omitted, or be executed in parallel.
- a write request is received from a user U. From operation 502 , the method 500 flows to operations 504 and 512 .
- the write data associated with the write request is encrypted, and, at operation 514 , the encrypted write data is stored in the database for storing user data.
- the user-U index for storing the user-U data, is updated based on the content of the write.
- the write request is to store text data
- the text data is indexed and stored in user-U index.
- the write request to disk, of the user-U index data is intercepted, such as by a program to control the writing of index data to disk.
- the program that controls the writing of index data provides an interface to write data to disk, e.g., interface to a database.
- the system validates that the user U is authenticated to perform the write operation. If the user is authenticated, the system gathers the encryption key used to encrypt user U's data, where each user utilizes a different encryption key to encrypt the index data. If the validation fails, then the operation 507 is terminated and an error code is returned. If the validation succeeds, the method 500 flows to operation 508 , where the index data of user U is encrypted with user-U encryption key.
- the encrypted data of user-U index is stored in a folder of a file system that is reserved for user U, or in some other data structure that is dedicated to storing the index data for the user U.
- FIG. 6 is a flowchart of a method 600 for processing a search request, according to some example embodiments. While the various operations in this flowchart are presented and described sequentially, one of ordinary skill will appreciate that some or all of the operations may be executed in a different order, be combined or omitted, or be executed in parallel.
- a search request is received from user U, e.g., to find one or more words within a plurality of records that contain text. From operation 602 , the method 600 flows to operation 604 where the index for user-U is searched.
- a read request to the user-U index is intercepted by the program that manages the encryption and decryption of index data.
- the user U is authenticated to determine if the user U has access rights to the data. If the authentication fails, the search request fails at operation 618 . If the authentication succeeds, the user-U key is obtained and the method 600 flows to operation 620 , where the program reads the index data for user U from disk, such as from a folder holding user U's data.
- the data read from disk in operation 620 is decrypted with the user-U key, and at operation 624 , the decrypted data from user-U's index is returned.
- the database containing the data for the search request is read based on the user-U's index information obtained at operation 624 .
- the method 600 flows to operation 608 were the data from the disk is decrypted.
- the search results are prepared based on the data read from the database. Further, at operation 612 , the search results are returned in response to the search request.
- FIG. 7 is a flowchart of a method 700 for secure data encryption in a multi-tenant service platform, according to some example embodiments. While the various operations in this flowchart are presented and described sequentially, one of ordinary skill will appreciate that some or all of the operations may be executed in a different order, be combined or omitted, or be executed in parallel.
- one or more processors detect a write request to write index data to storage.
- the write request is from a first user from a plurality of users, and the storage is configured to store index data for the plurality of users.
- the method 700 flows to operation 704 , where the one or more processors authenticate that the first user is approved for access to the storage.
- the method 700 flows to operation 706 to identify, by the one or more processors, a first encryption key for the first user, where each user from the plurality of users has a separate encryption key.
- the method 700 flows to operation 708 , where the one or more processors encrypt the index data with the first encryption key.
- the method 700 flows to operation 710 for storing the encrypted index data in the storage.
- the index data for each user from the plurality of users is stored in a separate addressable area within the storage.
- the authenticating further comprises checking if the first user has appropriate credentials to process the write request, where an error condition is returned for the write request when the first user does not have the appropriate credentials.
- identifying the first encryption key comprises selecting, by a key manager, the first encryption key that is associated with the first user from a plurality of encryption keys, wherein each user has a separate encryption key.
- the method 700 further comprises: detecting a read request from the first user to read index data from the storage; authenticating that the first user is approved for access to the storage; identifying the first encryption key for the first user; reading from storage the index data associated with the read request; decrypting the read index data with the first encryption key; and returning the decrypted index data in response to the read request.
- the index data is for a database where each record includes text.
- index data is for indexing words in the records of the database.
- Another general aspect is for a system that includes a memory comprising instructions and one or more computer processors.
- the instructions when executed by the one or more computer processors, cause the one or more computer processors to perform operations comprising: detecting a write request to write index data to storage, the write request being from a first user from a plurality of users, the storage being configured to store index data for the plurality of users; authenticating that the first user is approved for access to the storage; identifying a first encryption key for the first user, each user from the plurality of users having a separate encryption key; encrypting the index data with the first encryption key; and storing the encrypted index data in the storage.
- a machine-readable storage medium (e.g., a non-transitory storage medium) includes instructions that, when executed by a machine, cause the machine to perform operations comprising: detecting a write request to write index data to storage, the write request being from a first user from a plurality of users, the storage being configured to store index data for the plurality of users; authenticating that the first user is approved for access to the storage; identifying a first encryption key for the first user, each user from the plurality of users having a separate encryption key; encrypting the index data with the first encryption key; and storing the encrypted index data in the storage.
- FIG. 8 is a block diagram illustrating an example of a machine 800 upon or by which one or more example process embodiments described herein may be implemented or controlled.
- the machine 800 may operate as a standalone device or may be connected (e.g., networked) to other machines.
- the machine 800 may operate in the capacity of a server machine, a client machine, or both in server-client network environments.
- the machine 800 may act as a peer machine in a peer-to-peer (P2P) (or other distributed) network environment.
- P2P peer-to-peer
- machine shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein, such as via cloud computing, software as a service (SaaS), or other computer cluster configurations.
- SaaS software as a service
- Circuitry is a collection of circuits implemented in tangible entities that include hardware (e.g., simple circuits, gates, logic). Circuitry membership may be flexible over time and underlying hardware variability. Circuitries include members that may, alone or in combination, perform specified operations when operating. In an example, hardware of the circuitry may be immutably designed to carry out a specific operation (e.g., hardwired).
- the hardware of the circuitry may include variably connected physical components (e.g., execution units, transistors, simple circuits) including a computer-readable medium physically modified (e.g., magnetically, electrically, by moveable placement of invariant massed particles) to encode instructions of the specific operation.
- a computer-readable medium physically modified (e.g., magnetically, electrically, by moveable placement of invariant massed particles) to encode instructions of the specific operation.
- the instructions enable embedded hardware (e.g., the execution units or a loading mechanism) to create members of the circuitry in hardware via the variable connections to carry out portions of the specific operation when in operation.
- the computer-readable medium is communicatively coupled to the other components of the circuitry when the device is operating.
- any of the physical components may be used in more than one member of more than one circuitry.
- execution units may be used in a first circuit of a first circuitry at one point in time and reused by a second circuit in the first circuitry, or by a third circuit in a second circuitry, at a different time.
- the machine 800 may include a hardware processor 802 (e.g., a central processing unit (CPU), a hardware processor core, or any combination thereof), a graphics processing unit (GPU) 803 , a main memory 804 , and a static memory 806 , some or all of which may communicate with each other via an interlink (e.g., bus) 808 .
- the machine 800 may further include a display device 810 , an alphanumeric input device 812 (e.g., a keyboard), and a user interface (UI) navigation device 814 (e.g., a mouse).
- a hardware processor 802 e.g., a central processing unit (CPU), a hardware processor core, or any combination thereof
- GPU graphics processing unit
- main memory 804 main memory
- static memory 806 static memory
- the machine 800 may further include a display device 810 , an alphanumeric input device 812 (e.g., a keyboard), and a user interface (UI) navigation device 814 (e
- the display device 810 , alphanumeric input device 812 , and UI navigation device 814 may be a touch screen display.
- the machine 800 may additionally include a mass storage device (e.g., drive unit) 816 , a signal generation device 818 (e.g., a speaker), a network interface device 820 , and one or more sensors 821 , such as a Global Positioning System (GPS) sensor, compass, accelerometer, or another sensor.
- GPS Global Positioning System
- the machine 800 may include an output controller 828 , such as a serial (e.g., universal serial bus (USB)), parallel, or other wired or wireless (e.g., infrared (IR), near field communication (NFC)) connection to communicate with or control one or more peripheral devices (e.g., a printer, card reader).
- a serial e.g., universal serial bus (USB)
- parallel e.g., parallel
- wired or wireless connection e.g., infrared (IR), near field communication (NFC) connection to communicate with or control one or more peripheral devices (e.g., a printer, card reader).
- IR infrared
- NFC near field communication
- the mass storage device 816 may include a machine-readable medium 822 on which is stored one or more sets of data structures or instructions 824 (e.g., software) embodying or utilized by any one or more of the techniques or functions described herein.
- the instructions 824 may also reside, completely or at least partially, within the main memory 804 , within the static memory 806 , within the hardware processor 802 , or within the GPU 803 during execution thereof by the machine 800 .
- one or any combination of the hardware processor 802 , the GPU 803 , the main memory 804 , the static memory 806 , or the mass storage device 816 may constitute machine-readable media.
- machine-readable medium 822 is illustrated as a single medium, the term “machine-readable medium” may include a single medium, or multiple media, (e.g., a centralized or distributed database, and/or associated caches and servers) configured to store the one or more instructions 824 .
- machine-readable medium may include any medium that is capable of storing, encoding, or carrying instructions 824 for execution by the machine 800 and that cause the machine 800 to perform any one or more of the techniques of the present disclosure, or that is capable of storing, encoding, or carrying data structures used by or associated with such instructions 824 .
- Non-limiting machine-readable medium examples may include solid-state memories, and optical and magnetic media.
- a massed machine-readable medium comprises a machine-readable medium 822 with a plurality of particles having invariant (e.g., rest) mass. Accordingly, massed machine-readable media are not transitory propagating signals.
- massed machine-readable media may include non-volatile memory, such as semiconductor memory devices (e.g., Electrically Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM)) and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
- semiconductor memory devices e.g., Electrically Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM)
- flash memory devices e.g., Electrically Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM)
- EPROM Electrically Programmable Read-Only Memory
- EEPROM Electrically Erasable Programmable Read-Only Memory
- flash memory devices e.g., Electrically Erasable Programmable Read-Only Memory (EEPROM)
- flash memory devices e.g., Electrically Eras
- the instructions 824 may further be transmitted or received over a communications network 826 using a transmission medium via the network interface device 820 .
- the term “or” may be construed in either an inclusive or exclusive sense. Moreover, plural instances may be provided for resources, operations, or structures described herein as a single instance. Additionally, boundaries between various resources, operations, modules, engines, and data stores are somewhat arbitrary, and particular operations are illustrated in a context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within a scope of various embodiments of the present disclosure. In general, structures and functionality presented as separate resources in the example configurations may be implemented as a combined structure or resource. Similarly, structures and functionality presented as a single resource may be implemented as separate resources. These and other variations, modifications, additions, and improvements fall within a scope of embodiments of the present disclosure as represented by the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Storage Device Security (AREA)
Abstract
Methods, systems, and computer programs are presented for secure data encryption in a multi-tenant service platform. One method includes an operation for detecting a write request to write index data to storage. The write request is from a first user from a group of users, and the storage is configured to store index data for the group of users. Further, the method includes operations for authenticating that the first user is approved for access to the storage, and for identifying a first encryption key for the first user, where each user from the group of users has a separate encryption key. Further yet, the method includes encrypting the index data with the first encryption key and storing the encrypted index data in the storage.
Description
- This application is a continuation of prior application Ser. No. 17/114,318, filed on Dec. 7, 2020, which is incorporated by reference herein in its entirety.
- The subject matter disclosed herein generally relates to methods, systems, and machine-readable storage media for securing data.
- Many companies record a large number of voice support calls. For many reasons, such as for audit purposes or to improve business processes, the support calls are transcribed to text logs in order to facilitate searching of data within the support calls. However, the row transcripts of the conversations are difficult to search, such as to determine if an operator gave her name or to evaluate if the customer was satisfied with the call.
- The transcript data is often critical, so it is often encrypted before saving to permanent storage. Typical search tools do not work with encrypted data so new tools are needed for searching the encrypted transcripts.
- In multi-tenant operation centers, the data from multiple clients may be stored in the same database. Measures must be put in place to ensure that clients cannot access the data from other clients.
- What is needed are tools that provide powerful search capabilities of voice transcripts while protecting the confidentiality of data in multi-tenant environments.
- A communications service provider provides services to support customer centers for companies to interact with their customers. The interactions with customer include conversations that are sometimes recorded, transcribed to text, encrypted, and saved in a database. To facilitate searches of the conversations, an index is created for the transcripts. To protect each client's data, the index data for each user is kept in a separate index, which is stored in a separate area of the database, such as in a folder of a file system. The index data is encrypted with a separate key for each client in order to protect the index data, such that each client can only access its own index data.
- One general aspect includes a method that includes an operation for detecting a write request to write index data to storage. The write request is from a first user from a group of users, and the storage is configured to store index data for the group of users. Further, the method includes operations for authenticating that the first user is approved for access to the storage, and for identifying a first encryption key for the first user, where each user from the group of users has a separate encryption key. Further yet, the method includes encrypting the index data with the first encryption key and storing the encrypted index data in the storage.
- Various of the appended drawings merely illustrate example embodiments of the present disclosure and cannot be considered as limiting its scope.
-
FIG. 1 shows an architecture of a communications service provider that provides call center services, according to some example embodiments. -
FIG. 2 illustrates a system for searching encrypted data, according to some example embodiments. -
FIG. 3 illustrates the use of separate indexes for storing data, according to some example embodiments. -
FIG. 4 illustrates the encryption of index data using per-customer encryption key, according to some example embodiments. -
FIG. 5 is a flowchart of a method for processing a write request, according to some example embodiments. -
FIG. 6 is a flowchart of a method for processing a search request, according to some example embodiments. -
FIG. 7 is a flowchart of a method for secure data encryption in a multi-tenant service platform, according to some example embodiments. -
FIG. 8 is a block diagram illustrating an example of a machine upon or by which one or more example process embodiments described herein may be implemented or controlled. - Example methods, systems, and computer programs are directed to secure data encryption in a multi-tenant service platform. Examples merely typify possible variations. Unless explicitly stated otherwise, components and functions are optional and may be combined or subdivided, and operations may vary in sequence or be combined or subdivided. In the following description, for purposes of explanation, numerous specific details are set forth to provide a thorough understanding of example embodiments. It will be evident to one skilled in the art, however, that the present subject matter may be practiced without these specific details.
-
FIG. 1 shows an architecture of acommunications service provider 102 that provides call center services, according to some example embodiments. In some example embodiments, acommunications service provider 102 provides call-center services to facilitate voice and data communications betweencustomers 118 andagents 114. - The
agents 114 may work for a plurality of companies that use the services of thecommunications service provider 102. Thecustomers 118 may establish video and voice conversations to communicate with theagents 114, such as for requesting support for a product or service, utilizing client devices that interact with customer devices. During a support session, the client devices establish a communications session, also referred to herein as a conversation, with the customer devices, and the communications session allows the client devices to communicate with the customer devices by sharing any of text, audio, video, files, etc. As used herein, a conversation refers to a series of communication exchanges between two entities, where the communication exchanges occur close in time (e.g., the conversation includes interaction taking place within a fifteen minute window, although other time periods are possible, such as in the range from 30 seconds to thirty minutes). The communication exchange includes exchanging one or more of text messages, audio, video, documents, files, etc. - The
customers 118 andagents 114 communicate with thecommunications service provider 102 via direct connections or through anetwork 116, such as the Internet or a private network connection. - When a
customer 118 requests a video or voice communication with the company, thecommunications service provider 102 routes the video or voice communications to one of theagents 114 from that company. When anagent 114 initiates the call, theconversation manager 112 routes the call to thecustomer 118. - During the conversation, a
conversation manager 112 records the conversations (e.g., voice data) in aconversation database 110 of thecommunications service provider 102. For example, theconversation manager 112 records audio data transmitted as part of communications sessions established between the client device of thecustomer 118 and the customer device used by theagent 114. - Additionally, the
communications service provider 102 includes avideo processor 104 that processes video calls, a voice processor 106 that processes voice calls, and acommunications router 108 that routes the communication data betweencustomers 118 andagents 114. - The
conversation manager 112 manages the conversations, such as to establish, monitor, and terminate conversations, as well as managing the storage of conversation data when requested by the client of thecommunications service provider 102, e.g., to review conversations of theagents 114 performing work for the client. - The clients may use the conversation data to manage, monitor, and improve operations, such as to monitor for compliance by an agent or to determine when a follow-up call is requested to further a sales process. In some example embodiments, for security reasons, the data stored in the
conversation database 110 is encrypted, and tools for searching encrypted data are provided. -
FIG. 2 illustrates a system for searching encrypted data, according to some example embodiments.Voice data 202 from conversations is analyzed by aspeech recognition program 206 that converts the audio from the conversation into text-from-voice data 208. - A
storage module 222 takes the text-from-voice data 208, ortext data 204 from a conversation (e.g., from a chat), anencryption program 224 encrypts this data, and the encrypted data is stored in theconversation database 110. Anindexer 226, a program in thestorage module 222, indexes the data being stored and creates the data for theindex 210. In some example embodiments, theindex 210 is a data structure that improves the speed of data retrieval operations on a database table at the cost of additional writes and storage space to maintain the index data structure. Indexes are used to quickly locate data without having to search every record in a database every time a database is accessed. - The
index 210 is then used to perform searches on the data. Without theindex 210, searching for encrypted data would be almost impossible or require a large amount of computing resources. - When a
search request 212 is received, theindex 210 is searched atoperation 214. For example, a search for “John” is received, and theindex 210 identifies the one or more records in theconversation database 110 that contain the word “John.” Once thedata location 216 of the one or more records is identified, the corresponding data in the one or more records is decrypted 218. After the data is decrypted 218, the identified records are searched and theresults 220 of the search are presented to the requester. - The person skilled in the art would readily appreciate that more complex requests may be processed (e.g., containing multiple words) and these complex requests are also processed utilizing the
index 210, e.g., to identify the records that contain all the words in the request. By using theindex 210, the system enables the user to quickly search through a large number of records containing conversation data. - In some implementations, the data from the
index 210 is not encrypted (e.g., may include human-readable text); therefore, a malicious user having access to theindex 210 may obtain information related to theconversation database 110, such as names of individuals, personal information, etc. -
FIG. 3 illustrates the use of separate indexes for storing data, according to some example embodiments. To protect the data for each of the users 316 (e.g., each of the companies utilizing the communications service), aseparate index 304 is maintained for each user. The index data for each user is kept in a separate addressable area within the disk 410 (FIG. 4 ), such as within a folder of a directory structure or a partition within thedisk 410. This way, the data for thedifferent users 316 is separated to minimize the risk of enabling one of the users to access the data from another user. - The process to index the data is the same as the one described above with reference to
FIG. 2 , except that the index data of eachuser 316 is kept in aseparate index 304. It is noted that eachuser 316 represents a client of the communications service provider, and eachuser 316 is a separate account associated with one of the clients. Eachsearch request 212 includes information about the account used to access the conversation data, e.g., user id for the account. When processing asearch request 212, the index for theuser 316 is selected atoperation 306, and then the user'sindex 304 is used for the search request. Thus, foruser 1, the data is stored inindex 1 corresponding touser 1, and the search request fromuser 1 will utilizeindex 1. - Using separate indexes helps lower the risk of unauthorized data. However, there is still a risk that a user may gain access to the data in an unauthorized section of the conversation database 110 (e.g., due to a software bug, a user providing an incorrect address on disk). Note that the data for all the users is mingled in the
conversation database 110. Here, if all users utilize the same encryption key for the conversation database (although a different encryption key for the index), a user could potentially decrypt the data of another user if the user gained access to the database. -
FIG. 4 illustrates the encryption of index data using a per-customer encryption key, according to some example embodiments. The illustrated example shows how the data foruser 1 is indexed and stored ondisk 410, according to some example embodiments. - As described above, the
data 302 ofuser 1 is indexed by theindexer 226 during a write operation, which createsindex data 404. In some example embodiments, each record of the database includes information about one conversation, such as the text of the conversation. Theindex data 404 includes information regarding indexed values (e.g., words in the text), and theindex data 404 provides the location where the indexed value is found in the database, including the one or more records and the location within each record. The index may be organized in the form of a logical tree, and each word may correspond to one of the nodes in the tree. Other structures for the index may also be used. - During a write operation, the
indexer 226 sends the data to be stored indisk 410. An index-data encrypter/decrypter 406 processes the write request and it appears to theindexer 226 as an interface to write theindex data 404 to disk. In some example embodiments, the read and write requests from theindexer 226 are intercepted by the index-data encrypter/decrypter 406. Theindexer 226 sends an address for storing/reading the data and the index-data encrypter/decrypter 406 determines whichindex 304 is associated with this call, and then which user is associated with the call. - Thus, the index-data encrypter/
decrypter 406 may be utilized with any indexing tool because it is transparent to the program that performs the indexing. - In some example embodiments, the
index data 404 is encrypted before being saved todisk 410. Additionally, the index data for eachuser 316 is kept in a separate structure within thedisk 410, such as within a different directory of a file system. Therefore, the index data for the different users is separated indisk 410. - To encrypt the
index data 404, eachuser 316 has adifferent key 414, which is different from the encryption key utilized to encrypt the conversation data. Akey manager 412 manages theuser keys 414. When a write operation is detected, thekey manager 412 identifies the user associated with the write and retrieves the corresponding user key, such askey 420 foruser 1. - Further, a user authenticator manages the authentication procedures for the
users 316, which includescorresponding user IDs 418 and one or more validation methods (e.g., user password, double authentication). - During the write operation, the
user authenticator 416 validates the user requesting the write operation. If the user is authenticated, then the write request may proceed, but if the user is not authenticated, the write operation is terminated (e.g., error message returned indicating write operation failed). - Thus, if the user is authenticated, the index-data encrypter/
decrypter 406 receives the key 420 from thekey manager 412 and uses this key to encrypt theindex data 404, resulting in encryptedindex node data 408, which is then stored indisk 410 within the section reserved foruser 1. - The encrypted
index node data 408 is not human-readable; therefore, if the wrong user would gain access to the area indisk 410 of another user, the wrong user would not be able to read the index data because the wrong user does not have access to the right encryption/decryption key 414. - Having separate index keys and authenticating the user generating the request provides two levels of added security to protect the
index data 404 of the user. - During a read operation, the reverse takes place. As with the write, the
user authenticator 416 validates the requester. Also, thekey manager 412 provides theuser key 420 to the index-data encrypter/decrypter 406. The index-data encrypter/decrypter 406 then decrypts the encryptedindex node data 408 and returns the decryptedindex data 404 to theindexer 226. Again, the authentication and encryption of theindex data 404 is transparent to theindexer 226, appearing that the read request of theindex data 404 returns the requestedindex data 404 in clear form. - The conversation data may include personal information, such as people's names and phone numbers. By encrypting the
index data 404, the personal information is protected against unauthorized users that may read thedisk 410 data. -
FIG. 5 is a flowchart of amethod 500 for processing a write request, according to some example embodiments. While the various operations in this flowchart are presented and described sequentially, one of ordinary skill will appreciate that some or all of the operations may be executed in a different order, be combined or omitted, or be executed in parallel. - At
operation 502, a write request is received from a user U. Fromoperation 502, themethod 500 flows to operations 504 and 512. At operation 512, the write data associated with the write request is encrypted, and, atoperation 514, the encrypted write data is stored in the database for storing user data. - At operation 504, the user-U index, for storing the user-U data, is updated based on the content of the write. For example, the write request is to store text data, and the text data is indexed and stored in user-U index.
- At
operation 506, the write request to disk, of the user-U index data, is intercepted, such as by a program to control the writing of index data to disk. In some example embodiments, the program that controls the writing of index data provides an interface to write data to disk, e.g., interface to a database. - At
operation 507, the system validates that the user U is authenticated to perform the write operation. If the user is authenticated, the system gathers the encryption key used to encrypt user U's data, where each user utilizes a different encryption key to encrypt the index data. If the validation fails, then theoperation 507 is terminated and an error code is returned. If the validation succeeds, themethod 500 flows tooperation 508, where the index data of user U is encrypted with user-U encryption key. - At
operation 509, the encrypted data of user-U index is stored in a folder of a file system that is reserved for user U, or in some other data structure that is dedicated to storing the index data for the user U. -
FIG. 6 is a flowchart of amethod 600 for processing a search request, according to some example embodiments. While the various operations in this flowchart are presented and described sequentially, one of ordinary skill will appreciate that some or all of the operations may be executed in a different order, be combined or omitted, or be executed in parallel. - At
operation 602, a search request is received from user U, e.g., to find one or more words within a plurality of records that contain text. Fromoperation 602, themethod 600 flows tooperation 604 where the index for user-U is searched. - At operation 614, a read request to the user-U index is intercepted by the program that manages the encryption and decryption of index data. At
operation 616, the user U is authenticated to determine if the user U has access rights to the data. If the authentication fails, the search request fails atoperation 618. If the authentication succeeds, the user-U key is obtained and themethod 600 flows tooperation 620, where the program reads the index data for user U from disk, such as from a folder holding user U's data. - At
operation 622, the data read from disk inoperation 620 is decrypted with the user-U key, and atoperation 624, the decrypted data from user-U's index is returned. - At
operation 606, the database containing the data for the search request is read based on the user-U's index information obtained atoperation 624. - From
operation 606, themethod 600 flows tooperation 608 were the data from the disk is decrypted. Atoperation 610, the search results are prepared based on the data read from the database. Further, atoperation 612, the search results are returned in response to the search request. -
FIG. 7 is a flowchart of amethod 700 for secure data encryption in a multi-tenant service platform, according to some example embodiments. While the various operations in this flowchart are presented and described sequentially, one of ordinary skill will appreciate that some or all of the operations may be executed in a different order, be combined or omitted, or be executed in parallel. - At
operation 702, one or more processors detect a write request to write index data to storage. The write request is from a first user from a plurality of users, and the storage is configured to store index data for the plurality of users. - From
operation 702, themethod 700 flows tooperation 704, where the one or more processors authenticate that the first user is approved for access to the storage. - From
operation 704, themethod 700 flows tooperation 706 to identify, by the one or more processors, a first encryption key for the first user, where each user from the plurality of users has a separate encryption key. - From
operation 706, themethod 700 flows tooperation 708, where the one or more processors encrypt the index data with the first encryption key. - From
operation 708, themethod 700 flows tooperation 710 for storing the encrypted index data in the storage. - In one example, the index data for each user from the plurality of users is stored in a separate addressable area within the storage.
- In one example, the authenticating further comprises checking if the first user has appropriate credentials to process the write request, where an error condition is returned for the write request when the first user does not have the appropriate credentials.
- In one example, identifying the first encryption key comprises selecting, by a key manager, the first encryption key that is associated with the first user from a plurality of encryption keys, wherein each user has a separate encryption key.
- In one example, the
method 700 further comprises: detecting a read request from the first user to read index data from the storage; authenticating that the first user is approved for access to the storage; identifying the first encryption key for the first user; reading from storage the index data associated with the read request; decrypting the read index data with the first encryption key; and returning the decrypted index data in response to the read request. - In one example, the index data is for a database where each record includes text.
- In one example, index data is for indexing words in the records of the database.
- Another general aspect is for a system that includes a memory comprising instructions and one or more computer processors. The instructions, when executed by the one or more computer processors, cause the one or more computer processors to perform operations comprising: detecting a write request to write index data to storage, the write request being from a first user from a plurality of users, the storage being configured to store index data for the plurality of users; authenticating that the first user is approved for access to the storage; identifying a first encryption key for the first user, each user from the plurality of users having a separate encryption key; encrypting the index data with the first encryption key; and storing the encrypted index data in the storage.
- In yet another general aspect, a machine-readable storage medium (e.g., a non-transitory storage medium) includes instructions that, when executed by a machine, cause the machine to perform operations comprising: detecting a write request to write index data to storage, the write request being from a first user from a plurality of users, the storage being configured to store index data for the plurality of users; authenticating that the first user is approved for access to the storage; identifying a first encryption key for the first user, each user from the plurality of users having a separate encryption key; encrypting the index data with the first encryption key; and storing the encrypted index data in the storage.
-
FIG. 8 is a block diagram illustrating an example of amachine 800 upon or by which one or more example process embodiments described herein may be implemented or controlled. In alternative embodiments, themachine 800 may operate as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, themachine 800 may operate in the capacity of a server machine, a client machine, or both in server-client network environments. In an example, themachine 800 may act as a peer machine in a peer-to-peer (P2P) (or other distributed) network environment. Further, while only asingle machine 800 is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein, such as via cloud computing, software as a service (SaaS), or other computer cluster configurations. - Examples, as described herein, may include, or may operate by, logic, a number of components, or mechanisms. Circuitry is a collection of circuits implemented in tangible entities that include hardware (e.g., simple circuits, gates, logic). Circuitry membership may be flexible over time and underlying hardware variability. Circuitries include members that may, alone or in combination, perform specified operations when operating. In an example, hardware of the circuitry may be immutably designed to carry out a specific operation (e.g., hardwired). In an example, the hardware of the circuitry may include variably connected physical components (e.g., execution units, transistors, simple circuits) including a computer-readable medium physically modified (e.g., magnetically, electrically, by moveable placement of invariant massed particles) to encode instructions of the specific operation. In connecting the physical components, the underlying electrical properties of a hardware constituent are changed (for example, from an insulator to a conductor or vice versa). The instructions enable embedded hardware (e.g., the execution units or a loading mechanism) to create members of the circuitry in hardware via the variable connections to carry out portions of the specific operation when in operation. Accordingly, the computer-readable medium is communicatively coupled to the other components of the circuitry when the device is operating. In an example, any of the physical components may be used in more than one member of more than one circuitry. For example, under operation, execution units may be used in a first circuit of a first circuitry at one point in time and reused by a second circuit in the first circuitry, or by a third circuit in a second circuitry, at a different time.
- The machine (e.g., computer system) 800 may include a hardware processor 802 (e.g., a central processing unit (CPU), a hardware processor core, or any combination thereof), a graphics processing unit (GPU) 803, a
main memory 804, and astatic memory 806, some or all of which may communicate with each other via an interlink (e.g., bus) 808. Themachine 800 may further include adisplay device 810, an alphanumeric input device 812 (e.g., a keyboard), and a user interface (UI) navigation device 814 (e.g., a mouse). In an example, thedisplay device 810,alphanumeric input device 812, andUI navigation device 814 may be a touch screen display. Themachine 800 may additionally include a mass storage device (e.g., drive unit) 816, a signal generation device 818 (e.g., a speaker), anetwork interface device 820, and one ormore sensors 821, such as a Global Positioning System (GPS) sensor, compass, accelerometer, or another sensor. Themachine 800 may include anoutput controller 828, such as a serial (e.g., universal serial bus (USB)), parallel, or other wired or wireless (e.g., infrared (IR), near field communication (NFC)) connection to communicate with or control one or more peripheral devices (e.g., a printer, card reader). - The
mass storage device 816 may include a machine-readable medium 822 on which is stored one or more sets of data structures or instructions 824 (e.g., software) embodying or utilized by any one or more of the techniques or functions described herein. Theinstructions 824 may also reside, completely or at least partially, within themain memory 804, within thestatic memory 806, within thehardware processor 802, or within theGPU 803 during execution thereof by themachine 800. In an example, one or any combination of thehardware processor 802, theGPU 803, themain memory 804, thestatic memory 806, or themass storage device 816 may constitute machine-readable media. - While the machine-
readable medium 822 is illustrated as a single medium, the term “machine-readable medium” may include a single medium, or multiple media, (e.g., a centralized or distributed database, and/or associated caches and servers) configured to store the one ormore instructions 824. - The term “machine-readable medium” may include any medium that is capable of storing, encoding, or carrying
instructions 824 for execution by themachine 800 and that cause themachine 800 to perform any one or more of the techniques of the present disclosure, or that is capable of storing, encoding, or carrying data structures used by or associated withsuch instructions 824. Non-limiting machine-readable medium examples may include solid-state memories, and optical and magnetic media. In an example, a massed machine-readable medium comprises a machine-readable medium 822 with a plurality of particles having invariant (e.g., rest) mass. Accordingly, massed machine-readable media are not transitory propagating signals. Specific examples of massed machine-readable media may include non-volatile memory, such as semiconductor memory devices (e.g., Electrically Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM)) and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. - The
instructions 824 may further be transmitted or received over acommunications network 826 using a transmission medium via thenetwork interface device 820. - Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated. Structures and functionality presented as separate components in example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.
- The embodiments illustrated herein are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed. Other embodiments may be used and derived therefrom, such that structural and logical substitutions and changes may be made without departing from the scope of this disclosure. The Detailed Description, therefore, is not to be taken in a limiting sense, and the scope of various embodiments is defined only by the appended claims, along with the full range of equivalents to which such claims are entitled.
- As used herein, the term “or” may be construed in either an inclusive or exclusive sense. Moreover, plural instances may be provided for resources, operations, or structures described herein as a single instance. Additionally, boundaries between various resources, operations, modules, engines, and data stores are somewhat arbitrary, and particular operations are illustrated in a context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within a scope of various embodiments of the present disclosure. In general, structures and functionality presented as separate resources in the example configurations may be implemented as a combined structure or resource. Similarly, structures and functionality presented as a single resource may be implemented as separate resources. These and other variations, modifications, additions, and improvements fall within a scope of embodiments of the present disclosure as represented by the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Claims (20)
1. A method comprising:
encrypting, by one or more processors, transcripts of conversations corresponding to multiple users, the transcripts being encrypted with a transcript encryption key;
indexing, by the one or more processors, first portions of the transcripts, the first portions being indexed by first index data corresponding to a first user among the multiple users;
identifying, by the one or more processors, a first index encryption key that corresponds to the first user, the first index encryption key being distinct from the transcript encryption key with which the transcripts are encrypted; and
encrypting, by the one or more processors, the first index data that indexes the first portions of the transcripts and corresponds to the first user with the first index encryption key distinct from the transcript encryption key.
2. The method of claim 1 , further comprising:
storing the encrypted first index data of the first user in a corresponding first folder of a storage, the first folder corresponding to the first user.
3. The method of claim 1 , wherein:
the first index encryption key that corresponds to the first user among the multiple users is unique among multiple index encryption keys that each correspond to a different user among the multiple users.
4. The method of claim 3 , wherein:
the transcript encryption key with which the transcripts are encrypted is distinct from each of the multiple index encryption keys that each correspond to a different user among the multiple users.
5. The method of claim 1 , wherein:
the identifying of the first index encryption key of the first user includes selecting the first index encryption key from multiple index encryption keys that are each unique among the multiple index encryption keys and that each correspond to a different user among the multiple users.
6. The method of claim 1 , further comprising:
detecting a read request from the first user to read the first index data;
accessing the first index encryption key of the first user;
accessing the first index data based on the read request from the first user;
decrypting the first index data with the first index encryption key of the first user; and
providing the decrypted first index data in response to the read request.
7. The method of claim 1 , further comprising:
storing the encrypted first index data of the first user in a corresponding first partition of a storage, the first partition corresponding to the first user.
8. A system comprising:
a memory comprising instructions; and
one or more computer processors, wherein the instructions, when executed by the one or more computer processors, cause the system to perform operations comprising:
encrypting transcripts of conversations corresponding to multiple users, the transcripts being encrypted with a transcript encryption key;
indexing first portions of the transcripts, the first portions being indexed by first index data corresponding to a first user among the multiple users;
identifying a first index encryption key that corresponds to the first user, the first index encryption key being distinct from the transcript encryption key with which the transcripts are encrypted; and
encrypting the first index data that indexes the first portions of the transcripts and corresponds to the first user with the first index encryption key distinct from the transcript encryption key.
9. The system of claim 8 , wherein the operations further comprise:
storing the encrypted first index data of the first user in a corresponding first folder of a storage, the first folder corresponding to the first user.
10. The system of claim 8 , wherein:
the first index encryption key that corresponds to the first user among the multiple users is unique among multiple index encryption keys that each correspond to a different user among the multiple users.
11. The system of claim 10 , wherein:
the transcript encryption key with which the transcripts are encrypted is distinct from each of the multiple index encryption keys that each correspond to a different user among the multiple users.
12. The system of claim 8 , wherein:
the identifying of the first index encryption key of the first user includes selecting the first index encryption key from multiple index encryption keys that are each unique among the multiple index encryption keys and that each correspond to a different user among the multiple users.
13. The system of claim 8 , wherein the operations further comprise:
detecting a read request from the first user to read the first index data;
accessing the first index encryption key of the first user;
accessing the first index data based on the read request from the first user;
decrypting the first index data with the first index encryption key of the first user; and
providing the decrypted first index data in response to the read request.
14. The system of claim 8 , wherein the operations further comprise:
storing the encrypted first index data of the first user in a corresponding first partition of a storage, the first partition corresponding to the first user.
15. A non-transitory machine-readable storage medium comprising instructions that, when executed by a machine, cause the machine to perform operations comprising:
encrypting transcripts of conversations corresponding to multiple users, the transcripts being encrypted with a transcript encryption key;
indexing first portions of the transcripts, the first portions being indexed by first index data corresponding to a first user among the multiple users;
identifying a first index encryption key that corresponds to the first user, the first index encryption key being distinct from the transcript encryption key with which the transcripts are encrypted; and
encrypting the first index data that indexes the first portions of the transcripts and corresponds to the first user with the first index encryption key distinct from the transcript encryption key.
16. The non-transitory machine-readable storage medium of claim 15 , wherein the operations further comprise:
storing the encrypted first index data of the first user in a corresponding first folder of a storage, the first folder corresponding to the first user.
17. The non-transitory machine-readable storage medium of claim 15 , wherein:
the first index encryption key that corresponds to the first user among the multiple users is unique among multiple index encryption keys that each correspond to a different user among the multiple users.
18. The non-transitory machine-readable storage medium of claim 17 , wherein:
the transcript encryption key with which the transcripts are encrypted is distinct from each of the multiple index encryption keys that each correspond to a different user among the multiple users.
19. The non-transitory machine-readable storage medium of claim 15 , wherein:
the identifying of the first index encryption key of the first user includes selecting the first index encryption key from multiple index encryption keys that are each unique among the multiple index encryption keys and that each correspond to a different user among the multiple users.
20. The non-transitory machine-readable storage medium of claim 15 , wherein the operations further comprise:
detecting a read request from the first user to read the first index data;
accessing the first index encryption key of the first user;
accessing the first index data based on the read request from the first user;
decrypting the first index data with the first index encryption key of the first user; and
providing the decrypted first index data in response to the read request.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18/208,593 US20230325517A1 (en) | 2020-12-07 | 2023-06-12 | Securing data in multitenant environment |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/114,318 US11714911B2 (en) | 2020-12-07 | 2020-12-07 | Securing data in multitenant environment |
US18/208,593 US20230325517A1 (en) | 2020-12-07 | 2023-06-12 | Securing data in multitenant environment |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/114,318 Continuation US11714911B2 (en) | 2020-12-07 | 2020-12-07 | Securing data in multitenant environment |
Publications (1)
Publication Number | Publication Date |
---|---|
US20230325517A1 true US20230325517A1 (en) | 2023-10-12 |
Family
ID=81849211
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/114,318 Active 2041-03-29 US11714911B2 (en) | 2020-12-07 | 2020-12-07 | Securing data in multitenant environment |
US18/208,593 Pending US20230325517A1 (en) | 2020-12-07 | 2023-06-12 | Securing data in multitenant environment |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/114,318 Active 2041-03-29 US11714911B2 (en) | 2020-12-07 | 2020-12-07 | Securing data in multitenant environment |
Country Status (1)
Country | Link |
---|---|
US (2) | US11714911B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12019763B2 (en) * | 2021-11-26 | 2024-06-25 | Disney Enterprises, Inc. | Systems and methods for de-identifying data using a combination of cryptographic techniques |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7275159B2 (en) * | 2003-08-11 | 2007-09-25 | Ricoh Company, Ltd. | Multimedia output device having embedded encryption functionality |
US20170262546A1 (en) * | 2014-07-30 | 2017-09-14 | Hewlett Packard Enterprise Development Lp | Key search token for encrypted data |
JP6419633B2 (en) * | 2015-04-09 | 2018-11-07 | 株式会社日立ソリューションズ | Search system |
US10503730B1 (en) | 2015-12-28 | 2019-12-10 | Ionic Security Inc. | Systems and methods for cryptographically-secure queries using filters generated by multiple parties |
US10740474B1 (en) | 2015-12-28 | 2020-08-11 | Ionic Security Inc. | Systems and methods for generation of secure indexes for cryptographically-secure queries |
US10747947B2 (en) * | 2016-02-25 | 2020-08-18 | Nxgn Management, Llc | Electronic health record compatible distributed dictation transcription system |
US10885215B2 (en) * | 2016-11-18 | 2021-01-05 | Duncan MacDougall Greatwood | Searching using encrypted client and server maintained indices |
BR112019013130A8 (en) * | 2016-12-30 | 2023-02-14 | Bosch Gmbh Robert | METHOD AND SYSTEM OF SEARCHABLE SYMMETRICAL DYNAMIC ENCRYPTION OTHERWISE SEARCH PATTERNS |
EP3586260B1 (en) * | 2017-02-22 | 2023-09-27 | RingCentral, Inc. | Encrypting data records and processing encrypted records without exposing plaintext |
US10885216B2 (en) * | 2018-01-18 | 2021-01-05 | Sap Se | Secure substring search to filter encrypted data |
US11893127B2 (en) * | 2018-12-21 | 2024-02-06 | Acronis International Gmbh | System and method for indexing and searching encrypted archives |
-
2020
- 2020-12-07 US US17/114,318 patent/US11714911B2/en active Active
-
2023
- 2023-06-12 US US18/208,593 patent/US20230325517A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220179973A1 (en) | 2022-06-09 |
US11714911B2 (en) | 2023-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11652608B2 (en) | System and method to protect sensitive information via distributed trust | |
US9946895B1 (en) | Data obfuscation | |
US8489889B1 (en) | Method and apparatus for restricting access to encrypted data | |
US9235725B2 (en) | Client computer for querying a database stored on a server via a network | |
US10063372B1 (en) | Generating pre-encrypted keys | |
US10666647B2 (en) | Access to data stored in a cloud | |
US9160535B2 (en) | Truly anonymous cloud key broker | |
CN105516059B (en) | A kind of resource access control method and device | |
US10120870B2 (en) | System and method for searching distributed files across a plurality of clients | |
US20230325517A1 (en) | Securing data in multitenant environment | |
US11625368B1 (en) | Data migration framework | |
JP2018073064A (en) | File division and combination system and method thereof | |
US10438003B2 (en) | Secure document repository | |
CN115694921B (en) | Data storage method, device and medium | |
KR102005534B1 (en) | Smart device based remote access control and multi factor authentication system | |
TWI411929B (en) | System and method for managing files | |
US20230067054A1 (en) | Encryption of database log files | |
US9779255B2 (en) | Split storage and communication of documents | |
CN113946864B (en) | Confidential information acquisition method, device, equipment and storage medium | |
CN118585232A (en) | Code hosting method, apparatus and computer readable storage medium | |
Motghare | IMPLEMENTATION OF PRIVACY PRESERVING AND DYNAMIC SEARCHING MECHANISM WITH BIOMETRIC AUTHENTICATION IN CLOUD STORAGE | |
CN117828565A (en) | Resource processing method and device based on fort machine and computer equipment | |
WO2024157087A1 (en) | Systems and methods for managing and protecting data in computing networks | |
JP2021012730A (en) | File division and combination system and method thereof | |
CN113961970A (en) | Cross-network-segment network disk login identity authentication method and device, network disk and storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: TWILIO INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SWENSON, CHRISTOPHER;AKEEL, UMAIR;AMADOR, NICOLAS ACOSTA;AND OTHERS;SIGNING DATES FROM 20201208 TO 20210813;REEL/FRAME:064087/0938 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |