US12353586B2 - Secure encrypted identifier data sharing - Google Patents
Secure encrypted identifier data sharing Download PDFInfo
- Publication number
- US12353586B2 US12353586B2 US18/162,709 US202318162709A US12353586B2 US 12353586 B2 US12353586 B2 US 12353586B2 US 202318162709 A US202318162709 A US 202318162709A US 12353586 B2 US12353586 B2 US 12353586B2
- Authority
- US
- United States
- Prior art keywords
- data
- requester
- account
- provider
- shared
- 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.)
- Active, expires
Links
Images
Classifications
-
- 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/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2448—Query languages for particular applications; for extensibility, e.g. user defined types
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
- G06F21/6254—Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0407—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
- H04L63/0421—Anonymous communication, i.e. the party's identifiers are hidden from the other party or parties, e.g. using an anonymizer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
Definitions
- Cookies are small pieces of data generated and sent from a web server and stored on the user's computer by the user's web browser that are used to gather data about customers' habits based on their website browsing history. Because of privacy concerns, the use of cookies is being restricted. Companies may want to create target groups for advertising or marketing efforts for specific audience segments. To do so, companies may want to compare their customer information with that of other companies to see if their customer lists overlap for the creation of such target groups. Thus, companies may want to perform data analysis, such as an overlap analysis, of their customers or other data.
- FIG. 1 illustrates an example computing environment in which a network-based database system can data clean rooms, according to some example embodiments.
- FIG. 2 is a block diagram illustrating components of a compute service manager, according to some example embodiments.
- FIG. 5 shows an example of two separate accounts in a data warehouse system, according to some example embodiments.
- FIG. 6 is a block diagram illustrating a method for operating a data clean room, according to some example embodiments.
- FIGS. 7 A and 7 B a secure encryption-based clean room architecture, according to some example embodiments.
- FIG. 8 shows a flow diagram of a method for implementing a secure encryption-based clean room architecture, according to some example embodiments.
- FIGS. 9 A and 9 B show an example distributed database architecture for implementing multi-entity database clean rooms, according to some example embodiments.
- FIG. 10 shows a flow diagram of an example method for implementing a multi-entity encryption-based data clean room queries, according to some example embodiments.
- FIG. 11 illustrates a diagrammatic representation of a machine in the form of a computer system within which a set of instructions may be executed for causing the machine to perform any one or more of the methodologies discussed herein, in accordance with some embodiments of the present disclosure.
- an encryption based data clean room can be implemented that performs direct matching of data (e.g., user IDs) in the different data sets in an encryption-based approach using shared functions and shared data objects, in accordance with some example embodiments.
- a requester database account can seek to perform overlap analysis with data of another account, e.g., user data of a provider database account.
- the overlap analysis may require matching user identifiers (e.g., user IDs, emails) for users shared by the requestor and provider database accounts.
- the provider database account can generate available values that the provider will include in a given query without exposing the underlying data. For instance, the provider can specify that a zip-code column of its user data can be included as part of the requester's query (e.g., referenced by a condition in a SELECT). Further, the requestor account specifies which of the requester's data is to be included in a given query (e.g., columns, and/or rows) and encrypts this data using a key that is kept private to the requester.
- the provider account can further generate a secure sharable function that is configured to perform direct matching when called (e.g., by the requester), where the function is configured to accept as input a decrypt key.
- the requestor can receive shared access to the function and run the function on the requester's encrypted data (e.g., using compute instances managed by the requester account), where the requester inputs the decrypt key to the shared function when initiated to perform direct matching of overlapping data between the data sets and to generate results data in a secure encryption-based approach.
- the encryption based data clean room can be implemented to share data between multiple entities, such as between a requester account and a plurality of different provider accounts.
- the encryption based data clean room wraps encryption functions from the different provider accounts around a requester's encryption function such that direct encryption based matching can be performed by the encryption based data clean room without exposing the different provider's data to each other and the requester.
- FIG. 1 illustrates an example shared data processing platform 100 implementing secure messaging between deployments, in accordance with some embodiments of the present disclosure.
- FIG. 1 illustrates an example shared data processing platform 100 implementing secure messaging between deployments, in accordance with some embodiments of the present disclosure.
- various functional components that are not germane to conveying an understanding of the inventive subject matter have been omitted from the figures.
- additional functional components may be included as part of the shared data processing platform 100 to facilitate additional functionality that is not specifically described herein.
- the shared data processing platform 100 comprises the network-based database system 102 , a cloud computing storage platform 104 (e.g., a storage platform, an AWS® service, Microsoft Azure®, or Google Cloud Services®), and a remote computing device 106 .
- the network-based database system 102 is a network-based system used for storing and accessing data (e.g., internally storing data, accessing external remotely located data) in an integrated manner, and reporting and analysis of the integrated data from the one or more disparate sources (e.g., the cloud computing storage platform 104 ).
- the cloud computing storage platform 104 comprises a plurality of computing machines and provides on-demand computer system resources such as data storage and computing power to the network-based database system 102 . While in the embodiment illustrated in FIG. 1 , a network-based database system is depicted, other embodiments may include other types of databases or other data processing systems.
- the remote software component 108 can an application that a data provider (e.g., provider database account) or data consumer (e.g., requester database account) implement to interact with the network-based database system 102 (e.g., a browser that creates active sessions with network services of the network-based database system 102 or cloud computing storage platform 104 ).
- a data provider e.g., provider database account
- data consumer e.g., requester database account
- the network-based database system 102 e.g., a browser that creates active sessions with network services of the network-based database system 102 or cloud computing storage platform 104 .
- the network-based database system 102 comprises an access management system 110 , a compute service manager 112 , an execution. platform 114 , and a database 116 .
- the access management system 110 enables administrative users to manage access to resources and services provided by the network-based database system 102 . Administrative users can create and manage users, roles, and groups, and use permissions to allow or deny access to resources and services.
- the access management system 110 can store share data that securely manages shared access to the storage resources of the cloud computing storage platform 104 amongst different users of the network-based database system 102 , as discussed in further detail below.
- the compute service manager 112 is also coupled to database 116 , which is associated with the entirety of data stored. on the shared data processing platform 100 .
- the database 116 stores data pertaining to various functions and aspects associated with the network-based database system 102 and its users.
- the execution platform 114 comprises a plurality of compute nodes (e.g., virtual warehouses).
- a set of processes on a compute node executes a query plan compiled by the compute service manager 112 .
- the set of processes can include: a first process to execute the query plan; a second process to monitor and delete micro-partition files using a least recently used (LRU) policy, and implement an out of memory (OOM) error mitigation process; a third process that extracts health information from process logs and status information to send back to the compute service manager 112 ; a fourth process to establish communication with the compute service manager 112 after a system boot; and a fifth process to handle all communication with a compute cluster for a given job provided by the compute service manager 112 and to communicate information back to the compute service manager 112 and other compute nodes of the execution platform 114 .
- LRU least recently used
- OOM out of memory
- communication links between elements of the shared data processing platform 100 are implemented via one or more data communication networks. These data communication networks may utilize any communication protocol and any type of communication medium. In some embodiments, the data communication networks are a combination of two or more data communication networks (or sub-networks) coupled to one another. In alternate embodiments, these communication links are implemented using any type of communication medium and any communication protocol.
- data storage devices 124 - 1 to 124 -N are decoupled from the computing resources associated with the execution platform 114 . That is, new virtual warehouses can be created and terminated in the execution platform 114 and additional data storage devices can be created and terminated on the cloud computing storage platform 104 in an independent manner.
- This architecture supports dynamic changes to the network-based database system 102 based on the changing data storage/retrieval needs as well as the changing needs of the users and systems accessing the shared data processing platform 100 . The support of dynamic changes allows network-based database system 102 to scale quickly in response to changing demands on the systems and components within network-based database system 102 .
- the decoupling of the computing resources from the data storage devices 124 - 1 to 124 - n supports the storage of large amounts of data without requiring a corresponding large amount of computing resources. Similarly, this decoupling of resources supports a significant increase in the computing resources utilized at a particular time without requiring a corresponding increase in the available data storage resources. Additionally, the decoupling of resources enables different accounts to handle creating additional compute resources to process data shared by other users without affecting the other users' systems. For instance, a data provider may have three compute resources and share data with a data consumer, and the data consumer may generate new compute resources to execute queries against the shared data, where the new compute resources are managed by the data consumer and do not affect or interact with the compute resources of the data provider.
- Compute service manager 112 , database 116 , execution platform 114 , cloud computing storage platform 104 , and remote computing device 106 are shown in FIG. 1 as individual components. However, each of compute service manager 112 , database 116 , execution platform 114 , cloud computing storage platform 104 , and remote computing environment may be implemented as a distributed system (e.g., distributed across multiple systems/platforms at multiple geographic locations) connected by APIs and access information (e.g., tokens, login data). Additionally, each of compute service manager 112 , database 116 , execution platform 114 , and cloud computing storage platform 104 can be scaled up or down (independently of one another) depending on changes to the requests received and the changing needs of shared data processing platform 100 . Thus, in the described embodiments, the network-based database system 102 is dynamic and supports regular changes to meet the current data processing needs.
- Some nodes may have already cached the data needed to process the task (due to the nodes having recently downloaded the data from the cloud computing storage platform 104 for a previous job) and, therefore, be a good candidate for processing the task.
- Metadata stored in the database 116 assists the compute service manager 112 in determining which nodes in the execution platform 114 have already cached at least a portion of the data needed to process the task.
- One or more nodes in the execution platform 114 process the task using data cached by the nodes and, if necessary, data retrieved from the cloud computing storage platform 104 . It is desirable to retrieve as much data as possible from caches within the execution platform 114 because the retrieval speed is typically much faster than retrieving data from the cloud computing storage platform 104 .
- FIG. 2 is a block diagram illustrating components of the compute service manager 112 , in accordance with some embodiments of the present disclosure.
- a request processing service 202 manages received data storage requests and data retrieval requests (e.g., jobs to be performed on database data). For example, the request processing service 202 may determine the data necessary to process a received query (e.g., a data storage request or data retrieval request). The data may be stored in a cache within the execution platform 114 or in a data storage device in cloud computing storage platform 104 .
- a management console service 204 supports access to various systems and processes by administrators and other system managers. Additionally, the management console service 204 may receive a request to execute a job and monitor the workload on the system.
- the clean room engine 225 manages performing secure queries on a data set shared by a plurality of database accounts (e.g., a requesting or consumer database account that generates the request, and a provider database account that shares user defined functions to complete the request), as discussed in further detail below.
- a plurality of database accounts e.g., a requesting or consumer database account that generates the request, and a provider database account that shares user defined functions to complete the request
- the compute service manager 112 also includes a job compiler 206 , a job optimizer 208 , and a job executor 210 .
- the job compiler 206 parses a job into multiple discrete tasks and generates the execution code for each of the multiple discrete tasks.
- the job optimizer 208 determines the best method to execute the multiple discrete tasks based on the data that needs to be processed.
- the job optimizer 208 also handles various data pruning operations and other data optimization techniques to improve the speed and efficiency of executing the job.
- the job executor 210 executes the execution code for jobs received from a queue or determined by the compute service manager 112 .
- a job scheduler and coordinator 212 sends received jobs to the appropriate services or systems for compilation, optimization, and dispatch to the execution platform 114 .
- jobs may be prioritized and processed in that prioritized order.
- the job scheduler and coordinator 212 determines a priority for internal jobs that are scheduled by the compute service manager 112 with other “outside” jobs such as user queries that may be scheduled by other systems in the database but may utilize the same processing resources in the execution platform 114 .
- the job scheduler and coordinator 212 identifies or assigns particular nodes in the execution platform 114 to process particular tasks.
- a virtual warehouse manager 214 manages the operation of multiple virtual warehouses implemented in the execution platform 114 . As discussed below, each virtual warehouse includes multiple execution nodes that each include a cache and a processor (e.g., a virtual machine, an operating system level container execution environment).
- the compute service manager 112 includes a configuration and metadata manager 216 , which manages the information related to the data stored in the remote data storage devices and in the local caches (i.e., the caches in execution platform 114 ).
- the configuration and metadata manager 216 uses the metadata to determine which data micro-partitions need to be accessed to retrieve data for processing a particular task or job.
- a monitor and workload analyzer 218 oversees processes performed by the compute service manager 112 and manages the distribution of tasks (e.g., workload) across the virtual warehouses and execution nodes in the execution platform 114 .
- the monitor and workload analyzer 218 also redistributes tasks, as needed, based on changing workloads throughout the network-based database system 102 and may further redistribute tasks based on a user (e.g., “external”) query workload that may also be processed by the execution platform 114 .
- the configuration and metadata manager 216 and the monitor and workload analyzer 218 are coupled to a data storage device 220 .
- Data storage device 220 in FIG. 2 represent any data storage device within the network-based database system 102 .
- data storage device 220 may represent caches in execution platform 114 , storage devices in cloud computing storage platform 104 , or any other storage device.
- FIG. 3 is a block diagram illustrating components of the execution platform 114 , in accordance with some embodiments of the present disclosure.
- execution platform 114 includes multiple virtual warehouses, which are elastic clusters of compute instances, such as virtual machines.
- the virtual warehouses include virtual warehouse 1 , virtual warehouse 2 , and virtual warehouse n.
- Each virtual warehouse e.g., EC2 cluster
- Each virtual warehouse includes multiple execution nodes (e.g., virtual machines) that each include a data cache and a processor.
- the virtual warehouses can execute multiple tasks in parallel by using the multiple execution nodes.
- execution platform 114 can add new virtual warehouses and drop existing virtual warehouses in real time based on the current processing needs of the systems and users.
- All virtual warehouses can access data from any data storage device (e.g., any storage device in cloud computing storage platform 104 ).
- each virtual warehouse shown in FIG. 3 includes three execution nodes, a particular virtual warehouse may include any number of execution nodes. Further, the number of execution nodes in a virtual warehouse is dynamic, such that new execution nodes are created when additional demand is present, and existing execution nodes are deleted when they are no longer necessary (e.g., upon a query or job completion).
- Each virtual warehouse is capable of accessing any of the data storage devices 124 - 1 to 124 - n shown in FIG. 1 .
- the virtual warehouses are not necessarily assigned to a specific data storage device 124 - 1 to 124 - n and, instead, can access data from any of the data storage devices 124 - 1 to 124 - n within the cloud computing storage platform 104 .
- each of the execution nodes shown in FIG. 3 can access data from any of the data storage devices 124 - 1 to 124 - n .
- the storage device 124 - 1 of a first user may be shared with a worker node in a virtual warehouse of another user (e.g., consumer account user), such that the other user can create a database (e.g., read-only database) and use the data in storage device 124 - 1 directly without needing to copy the data (e.g., copy it to a new disk managed by the consumer account user).
- a particular virtual warehouse or a particular execution node may be temporarily assigned to a specific data storage device, but the virtual warehouse or execution node may later access data from any other data storage device.
- Execution node 322 - i includes a cache 324 - 1 and a processor 326 - 1 .
- Execution node 322 - 2 includes a cache 324 - 2 and a processor 326 - 2 .
- Execution node 322 - n includes a cache 324 - n and a processor 326 - n.
- the execution nodes shown in FIG. 3 are stateless with respect to the data the execution nodes are caching For example, these execution nodes do not store or otherwise maintain state information about the execution node, or the data being cached by a particular execution node. Thus, in the event of an execution node failure, the failed node can be transparently replaced by another node. Since there is no state information associated with the failed execution node, the new (replacement) execution node can easily replace the failed node without concern for recreating a particular state.
- execution nodes shown in FIG. 3 each include one data cache and one processor
- alternative embodiments may include execution nodes containing any number of processors and any number of caches. Additionally, the caches may vary in size among the different execution nodes.
- the caches shown in FIG. 3 store, in the local execution node (e.g., local disk), data that was retrieved from one or more data. storage devices in cloud computing storage platform 104 (e.g., S3 objects recently accessed by the given node). In some example embodiments, the cache stores file headers and individual columns of files as a query downloads only columns necessary for that query.
- the job optimizer 208 assigns input file sets to the nodes using a consistent hashing scheme to hash over table file names of the data accessed (e.g., data in database 116 or database 122 ). Subsequent or concurrent queries accessing the same table file will therefore be performed on the same node, according to sonic example embodiments.
- the nodes and virtual warehouses may change dynamically in response to environmental conditions (e.g., disaster scenarios), hardware/software issues (e.g., malfunctions), or administrative changes (e.g., changing from a large cluster to smaller cluster to lower costs).
- environmental conditions e.g., disaster scenarios
- hardware/software issues e.g., malfunctions
- administrative changes e.g., changing from a large cluster to smaller cluster to lower costs.
- the caches reduce or eliminate the bottleneck problems occurring in platforms that consistently retrieve data from remote storage systems. Instead of repeatedly accessing data from the remote storage devices, the systems and methods described herein access data from the caches in the execution nodes, which is significantly faster and avoids the bottleneck problem discussed above.
- the caches are implemented using high-speed memory devices that provide fast access to the cached data. Each cache can store data from any of the storage devices in the cloud computing storage platform 104 .
- the cache resources and computing resources may vary between different execution nodes. For example, one execution node may contain significant computing resources and minimal cache resources, making the execution node useful for tasks that require significant computing resources. Another execution node may contain significant cache resources and minimal computing resources, making this execution node useful for tasks that require caching of large amounts of data. Yet another execution node may contain cache resources providing faster input-output operations, useful for tasks that require fast scanning of large amounts of data.
- the execution platform 114 implements skew handling to distribute work amongst the cache resources and computing resources associated with a particular execution, where the distribution may he further based on the expected tasks to be performed by the execution nodes.
- virtual warehouses 1 , 2 , and n are associated with the same execution platform 114
- the virtual warehouses may be implemented using multiple computing systems at multiple geographic locations.
- virtual warehouse 1 can be implemented by a computing system at a first geographic location
- virtual warehouses 2 and n are implemented by another computing system at a second geographic location.
- these different computing systems are cloud-based computing systems maintained by one or more different, entities.
- each virtual warehouse is shown in FIG. 3 as having multiple execution nodes.
- the multiple execution nodes associated with each virtual warehouse may be implemented using multiple computing systems at multiple geographic locations.
- an instance of virtual warehouse 1 implements execution nodes 302 - 1 and 302 - 2 on one computing platform at a geographic location and implements execution node 302 - n at a different computing platform at another geographic location.
- Selecting particular computing systems to implement an execution node may depend on various factors, such as the level of resources needed for a particular execution node (e.g., processing resource requirements and cache requirements), the resources available at particular computing systems, communication capabilities of networks within a geographic location or between geographic locations, and which computing systems are already implementing other execution nodes in the virtual warehouse.
- Execution platform 114 is also fault tolerant. For example, if one virtual warehouse fails, that virtual warehouse is quickly replaced with a different virtual warehouse at a different geographic location.
- a particular execution platform 114 may include any number of virtual warehouses. Additionally, the number of virtual warehouses in a particular execution platform is dynamic, such that new virtual warehouses are created when additional processing and/or caching resources are needed. Similarly, existing virtual warehouses may be deleted when the resources associated with the virtual warehouse are no longer necessary.
- the virtual warehouses may operate on the same data in cloud computing storage platform 104 , but each virtual warehouse has its own execution nodes with independent processing and caching resources. This configuration allows requests on different virtual warehouses to be processed independently and with no interference between the requests. This independent processing, combined with the ability to dynamically add and remove virtual warehouses, supports the addition of new processing capacity for new users without impacting the performance observed by the existing users.
- FIG. 4 is a computing environment 400 conceptually illustrating an example software architecture executing a user defined function (UDF) by a process running on a given execution node of the execution platform 114 , in accordance with some embodiments of the present disclosure.
- the execution node 302 - 1 from the execution platform 114 includes an execution node process 410 , which in an embodiment is running on the processor 3064 and can also utilize memory from the cache 304 - 1 (or another memory device or storage).
- a “process” or “computing process” can refer to an instance of a computer program that is being executed by one or more threads by an execution node or execution platform.
- the execution node process 410 is executing a UDF client 412 in the example of FIG. 4 .
- the UDF client 412 is implemented to support UDFs written in a particular programming language such as JAVA, and the like.
- the UDF client 412 is implemented in a different programming language (e.g., C or C++) than the user code 430 , which can further improve security of the computing environment 400 by using a different codebase (e.g., one without the same or fewer potential security exploits)
- an operation from a UDF can be performed by a user code runtime 424 executing within a sandbox process 420 .
- the user code runtime 424 is implemented as a virtual machine, such as a JAVA virtual machine (JVM). Since the user code runtime 424 advantageously executes in a separate process relative to the execution node process 410 , there is a lower risk of manipulating the execution node process 410 .
- Results of performing the operation can be stored in a log 444 for review and retrieval.
- the log 444 can be stored locally in memory at the execution node 302 - 1 , or at a separate location such as the storage platform 104 .
- Sandbox process 420 in an embodiment, is a sub-process (or separate process) from the execution node process 410 .
- a sub-process in an embodiment, refers to a child process of a given parent process (e.g., in this example, the execution node process 410 ).
- the sandbox process 420 in an example, is a program that reduces the risk of security breaches by restricting the running environment of entrusted. applications using security mechanisms such as namespaces and secure computing modes (e.g., using a system call filter to an executing process and all its descendants, thus reducing the attack surface of the kernel of a given operating system).
- the Requester Database Account 705 generates shared tables for use in the clean room queries. For example, the Requester Database Account 705 generates the My Data Table 721 and My Secure Query Requests Table 722 which is shared with the Provider Database Account 750 as My Secure Query Requests Table 723 and My Data Table 767 . As discussed, the data of the My Data Table 721 is encrypted with a pass phrase (e.g., AES 256 encryption pass phrase, pass key, encryption key) that is private or secret to the Requester Database Account 705 .
- a pass phrase e.g., AES 256 encryption pass phrase, pass key, encryption key
- the Requester Database Account 705 generates a clean room request. For example, the Requester Database Account 705 inserts a query request into the My Secure Query Requests Table 722 , which is shared with the Provider Database Account 750 in My Secure Query Requests Table 723 , which initiates the Query Runner Stored Procedure 777 of the Provider Database Account 750 .
- the Requester Database Account 705 generates results data by passing the Shared Secure User Defined Table Function 747 the decrypt pass phrase, and the Shared Secure User Defined Table Function 747 (running on compute instances of the Requester Database Account 705 ) decrypts the requester data and matches it to user IDs in the providers data set 759 which are accessed using metadata references, without exposing the data to the requester database account, in accordance with some example embodiments.
- the direct matching occurs when the Requester Database Account 705 calls the Shared Secure User Defined Table Function 747 (as the Provider Database Account 750 cannot execute the function because the provider does not have the encryption pass phrase that is used to encrypt the requester data to generate results data).
- the results data is displayed (e.g., displays the results data on a display device of the Requester Database Account 705 ).
- FIGS. 9 A and 9 B show an example distributed database architecture for implementing multi-entity database clean rooms (e.g., three or more different accounts of different organizations or users of the network-based database system 102 , FIG. 1 ), according to some example embodiments.
- a Requester Database Account 905 shares data with a Provider A Database Account 950 ( FIG. 9 B ) and Provider B Database Account 990 ( FIG. 9 B ), as indicated by the double-side share arrows at the top of FIGS. 9 A and 9 B .
- the “A” “B”, “C”, and “D” arrows are disconnected arrows between items shared across FIGS. 9 A and 9 B .
- database clean rooms can implement sharing between a single requester and single provider (discussed in the approaches above), implementing a secure data clean room that enables the requester access to advertisement results data (e.g., ad metrics and performance) from multiple different provider advertisers can be difficult to implement in a. secure manner (e.g., without exposing the data of Provider A Database Account 950 to Provider B Database Account 990 , and vice versa).
- advertisement results data e.g., ad metrics and performance
- the Requester Database Account 905 can be a product company (e.g., product company that is purchasing ad space for different products or services)
- the Provider A Database Account 950 can be a streaming platform that provides advertisement services (e.g., displays the ads on a network site)
- Provider B Database Account 990 can be a brick-and-mortar store that physically sells advertised products of the Requester Database Account 905 .
- it can be difficult to track conversion from purchased ads that were displayed to end-users (e.g., users that view a given ad) to those end-users later purchasing the product (e.g., in the brick-and-mortar store) due to the computational difficulties of securely sharing the data from different providers and the requester.
- the clean room engine 225 implements an encryption-based database clean room that can share data between multiple entities (e.g., three or more entities or accounts of the network-based database system 102 ), including a Requester Database Account 905 and multiple provider accounts (e.g., Provider A Database Account 950 , Provider B Database Account 990 ), where user data (e.g., user IDs of the end-users of the different accounts) is provided and securely shared via one or more encryption mechanisms, and the Requester Database Account 905 can perform verification and analysis of the data from the different providers entirely on the database account instance of the requester (e.g., on database storage devices and compute instances of the Requester Database Account 905 of the network-based database system 102 ), in accordance with some example embodiments.
- entities e.g., three or more entities or accounts of the network-based database system 102
- a Requester Database Account 905 e.g., Provider A Database Account 950 , Provider B Database Account 990
- user data e.g.,
- the Provider A Database Account 950 creates a Provider_A User ID Encryption Secure Function 952 which is a shareable secure function that can be shared with the Requester Database Account 905 , which is encrypted by an encryption function of the Provider A Database Account 950 (e.g., with keys that are private to that provider).
- the Provider B Database Account 990 generates a similar function: Provider_B User ID Encryption Secure Function 992 A, which is encrypted by an encryption function of the Provider B Database Account 990 (e.g., with keys that are private to the Provider B Database Account 990 ).
- the Provider_B User ID Encryption Secure Function 992 A is then shared from the Provider B Database Account 990 to the Provider A Database Account 950 as Provider_B User ID Encryption Secure Function 992 B, which can be used to wrap functions and which can be called in execution to generate results data (e.g., shared with the Requester Database Account 905 and executed to provide end-user ID direct matching, without exposing the secure function's data to the Requester Database Account 905 ), in accordance with some example embodiments.
- the Requester Database Account 905 generates a My Data Table 907 A which is the input data from the Requester Database Account 905 that is to be used for completing multi-entity data clean room queries that are generated by the requester. Further, the Requester Database Account 905 generates a Decrypt_ID Secure Function 909 A which is configured to perform decryption of the encrypted IDs in the My Data Table 907 A. In some example embodiments, the Decrypt_ID Secure Function 909 A stores a private pass key of the Requester Database Account 905 (e.g., AES 256 decryption key, pass phrase) which can be initiated to decrypt the IDs (user IDs) that are included in the My Data Table 907 A, according to some example embodiments.
- a private pass key of the Requester Database Account 905 e.g., AES 256 decryption key, pass phrase
- the Requester Database Account 905 adds query data to the My Secure Query Requests Table 911 A which is part of the clean room shared 913 A which is shared with Provider A Database Account 950 (in FIG. 9 B ) as the shared clean room data 913 B (shared object), which, as depicted, includes the My Secure Query Requests Table 911 B, which further comprises the data of the newly added request.
- the newly added query request initiates streams and tasks to run a Stored Procedure Query Runner 961 in FIG. 9 B , in accordance with some example embodiments.
- the Provider A Database Account 950 begins by creating an ID Encrypted Table 962 A by cycling through the My Data Table 907 B (shared object) in micro batches.
- the micro batches are mixed or re-ordered so they are not included in the initial order such that are not identifiable in the ID Encrypted Table 962 A.
- the ID Encrypted Table 962 A integrates the My Data Table 907 B by wrapping the Secure Function Decrypt_ID 909 B (shared object from the Requester Database Account 905 ) around the table of encrypted IDs in the My Data Table 907 B (the shared object), and further wrapping the two encryption functions—Provider_B User ID Encryption Secure Function 992 B, and the Provider_A User ID Encryption Secure Function 952 —around the My Data Table 907 B (which is already wrapped by Secure Function Decrypt_ID 909 B), which results in triple encrypted data that uses the user IDs from the requester side as encrypted by the encryption functions of the providers.
- the triple encrypted object, ID Encrypted Table 962 A is then shared from the Provider A Database Account 950 to the Requester Database Account 905 as the ID Encrypted Table 962 B ( FIG. 9 A ), in accordance with some example embodiments.
- a requester performs clean room analysis on two providers, it is appreciated that the number of providers can be scaled such that the requester can efficiently perform analysis on each provider with which the requester interacts (e.g., four provider accounts that provide ad space, one physical store provider account that sells products, and three online network retailers that sell the product(s)).
- FIG. 10 shows a flow diagram of an example method 1000 for implementing a multi-entity encryption-based data clean room queries, according to some example embodiments.
- the secure functions of the provider accounts are generated (e.g., Provider_B User ID Encryption Secure Function 992 B, from the Provider B Database Account 990 ; and the Provider_A User ID Encryption Secure Function 952 , from Provider A Database Account 950 ).
- the requester data tables are generated (e.g., My Data Table 907 A, Decrypt_ID Secure Function 909 A, and My Secure Query Requests Table 911 A), which are shared with the Provider A Database Account 950 in FIG. 9 B , as discussed above.
- a multi-entity query request is generated.
- the Requester Database Account 905 adds new query request data to the My Secure Query Requests Table 911 A ( FIG. 9 A ) which is shared with the Provider A Database Account 950 in the My Secure Query Requests Table 911 B ( FIG. 9 B ).
- multi-entity ID data is generated.
- the Provider A Database Account 950 generates the ID Encrypted Table 962 A by a wrapping the My Data Table 907 B with the Secure Function Decrypt_ID 909 B, which is then wrapped by Provider_B User ID Encryption Secure Function 992 B, which is then further wrapped by the Provider_A User ID Encryption Secure Function 952 .
- the ID Encrypted Table 962 A is generated by the Provider A Database Account 950
- the ID Encrypted Table 962 A is shared with the Requester Database Account 905 as the ID Encrypted Table 962 B (in FIG. 9 A ).
- the provider data is generated.
- the Provider A Database Account 950 generates the encrypted exposure data table 981 A by wrapping the exposure data set of the provider source data 982 using the Provider_B User ID Encryption Secure Function 992 B and the Provider_A User ID Encryption Secure Function 952 (e.g., in the same order as was used to create the ID Encrypted Table 962 A, albeit without first wrapping the data with the Secure Function Decrypt_ID 909 B).
- the encrypted exposure data table 981 A is shared with the Requester Database Account 905 as the encrypted exposure data table 981 B.
- the results data is generated.
- the Requester Database Account 905 can perform joins on the ID Encrypted Table 962 B and the encrypted exposure data table 981 B, and an analysis function is applied to the joined data (e.g., attribution modeling function 933 ).
- the requester's user data is decrypted using the passkey within the Decrypt_ID Secure Function 909 A, with the encryption functions of the providers, where direct matching can be implemented using the shared functions of the providers: Provider_B User ID Encryption Secure Function 992 B and the Provider_A User ID Encryption Secure Function 952 , which can access the respective providers user ID data behind the scenes, as secure function operations (UDFs) of the respective providers (respective sandbox processes), without exposing the function operations (and underlying data, such as exposure data) to the requester account that is executing the functions to generate to the results data.
- UDFs secure function operations
- FIG. 11 illustrates a diagrammatic representation of a machine 1100 in the form of a computer system within which a set of instructions may be executed for causing the machine 1100 to perform any one or more of the methodologies discussed herein, according to an example embodiment.
- FIG. 11 shows a diagrammatic representation of the machine 1100 in the example form of a computer system, within which instructions 1116 (e.g., software, a program, an application, an applet, an app, or other executable code) for causing the machine 1100 to perform any one or more of the methodologies discussed herein may be executed.
- the instructions 1116 may cause the machine 1100 to execute any one or more operations of any one or more of the methods described herein.
- the instructions 1116 may cause the machine 1100 to implemented portions of the data flows described herein.
- the instructions 1116 transform a general, non-programmed machine into a particular machine 1100 (e.g., the remote computing device 106 , the access management system 110 , the compute service manager 112 , the execution platform 114 , the access management system 118 , the Web proxy 120 , remote computing device 106 ) that is specially configured to carry out any one of the described and illustrated functions in the manner described herein.
- the machine 1100 operates as a standalone device or may be coupled (e.g., networked) to other machines.
- the machine 1100 may operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
- the machine 1100 may comprise, but not be limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a smart phone, a mobile device, a network router, a network switch, a network bridge, or any machine capable of executing the instructions 1116 , sequentially or otherwise, that specify actions to be taken by the machine 1100 .
- the term “machine” shall also be taken to include a collection of machines 1100 that individually or jointly execute the instructions 1116 to perform any one or more of the methodologies discussed herein.
- the machine 1100 includes processors 1110 , memory 1130 , and input/output (I/O) components 1150 configured to communicate with each other such as via a bus 1102 .
- the processors 1110 e.g., a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a radio-frequency integrated circuit (AMC), another processor, or any suitable combination thereof
- the processors 1110 may include, for example, a processor 1112 and a processor 1114 that may execute the instructions 1116 .
- RISC reduced instruction set computing
- CISC complex instruction set computing
- GPU graphics processing unit
- DSP digital signal processor
- ASIC application-specific integrated circuit
- AMC radio-frequency integrated circuit
- processor is intended to include multi-core processors 1110 that may comprise two or more independent processors (sometimes referred to as “cores”) that may execute instructions 1116 contemporaneously.
- FIG. 11 shows multiple processors 1110
- the machine 1100 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors with a single core, multiple processors with multiple cores, or any combination thereof.
- the memory 1130 may include a main memory 1132 , a static memory 1134 , and a storage unit 1136 , all accessible to the processors 1110 such as via the bus 1102 .
- the main memory 1132 , the static memory 1134 , and the storage unit 1136 comprising a machine storage medium 1138 may store the instructions 1116 embodying any one or more of the methodologies or functions described herein.
- the instructions 1116 may also reside, completely or partially, within the main memory 1132 , within the static memory 1134 , within the storage unit 1136 , within at least one of the processors 1110 (e.g., within the processor's cache memory), or any suitable combination thereof, during execution thereof by the machine 1100 .
- the I/O components 1150 include components to receive input, provide output, produce output, transmit information, exchange information, capture measurements, and so on.
- the specific I/O components 1150 that are included in a particular machine 1100 will depend on the type of machine. For example, portable machines such as mobile phones will likely include a touch input device or other such input mechanisms, while a headless server machine will likely not include such a touch input device. It will be appreciated that the I/O components 1150 may include many other components that are not shown in FIG. 11 .
- the I/O components 1150 are grouped according to functionality merely for simplifying the following discussion and the grouping is in no way limiting. In various example embodiments, the I/O components 1150 may include output components 1152 and input components 1154 .
- the output components 1152 may include visual components (e.g., a display such as a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)), acoustic components (e.g., speakers), other signal generators, and so forth.
- visual components e.g., a display such as a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)
- acoustic components e.g., speakers
- the input components 1154 may include alphanumeric input components (e.g., a keyboard, a touch screen configured to receive alphanumeric input, a photo-optical keyboard, or other alphanumeric input components), point-based input components (e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or another pointing instrument), tactile input components (e.g., a physical button, a touch screen that provides location and/or force of touches or touch gestures, or other tactile input components), audio input components (e.g., a microphone), and the like.
- alphanumeric input components e.g., a keyboard, a touch screen configured to receive alphanumeric input, a photo-optical keyboard, or other alphanumeric input components
- point-based input components e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or another pointing instrument
- tactile input components e.g., a physical button,
- inventive subject matter may be referred to herein, individually and/or collectively, by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or inventive concept if more than one is in fact disclosed.
- inventive concept merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or inventive concept if more than one is in fact disclosed.
- inventive subject matter is intended to cover any and all adaptations or variations of various embodiments. Combinations of the above embodiments, and other embodiments not specifically described herein, will be apparent, to those of skill in the art, upon reviewing the above description.
- Described implementations of the subject matter can include one or more features, alone or in combination as illustrated below by way of example.
- Example 1 A method comprising: generating, by a requester database account of a distributed database, a clean room query request against a shared data set comprising requester data set from the requester database account and a provider data set from a provider database account of the distributed database, the requester database account not having access through the distributed database to the provider data set in plain text format, the provider database account not having access through the distributed database to the requester data set in plain text format, generating, by the requester database account, a requester shared data table comprising the requester data set in encrypted format that is encrypted using a pass phrase that is private to the requester database account; generating, by the provider database account, a user defined function that generates results data using the requester shared data table in the encrypted format and the provider data set, wherein the user defined function accepting a decryption parameter to generate the results data by decrypting the requester data set; generating, by the requester database account, the results data for the clean room query request by inputting, by the requester database account, the pass phrase into the user
- Example 2 The method of example 1, wherein the requester database account executes the user defined function and the user defined function executes on a provider database instance of the provider database account on the distributed database.
- Example 3 The method of examples 1 or 2, further comprising: sharing the requester data set in the encrypted format with the provider database account as a shared database object of the distributed database.
- Example 4 The method of examples 1-3, further comprising: sharing, by the provider database account, the user defined function with the requester database account.
- Example 5 The method of examples 1-4, wherein the user defined function generates the results data using metadata references to the provider data set.
- Example 6 The method of examples 1-5, wherein the pass phrase is private to the requester database.
- Example 11 A system comprising: one or more processors of a machine; and a memory storing instructions that, when executed by the one or more processors, cause the machine to perform operations implementing any one of example methods 1 to 10.
- Example 13 A method comprising: generating, from a requestor database account of a distributed. database, a query against user data shared by multiple provider database accounts including a first provider database account and a second. provider database account, the requestor database account and the multiple provider database account not having access user data identifiers in plain text format through the distributed database; receiving, from a requestor database account of a distributed database, a user identifier table wrapped in a decryption function of the requestor database account and a first encryption function of the first provider database account and a second encryption function of a second provider database account; receiving, from the requestor database account, a provider user data set of the first provider database account, the provider user data set being wrapped in the first encryption function of the first provider database account and the second encryption function of the second provider database account; and generating, from the requestor database account, results data using the first provider user data set and the user identifier table.
- Example 14 The method of example 13, wherein the user identifier table and the provider user data set are wrapped in a same order by the first encryption function of the first provider database account and the second encryption function of the second provider database account.
- Example 15 A system comprising: one or more processors of a machine; and a memory storing instructions that, when executed by the one or more processors, cause the machine to perform operations implementing any one of example methods 13 or 14.
- Example 16 A machine-readable storage device embodying instructions that, when executed by a machine, cause the machine to perform operations implementing any one of example methods 13 or 14.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Medical Informatics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Claims (21)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US18/162,709 US12353586B2 (en) | 2021-06-30 | 2023-01-31 | Secure encrypted identifier data sharing |
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202163216888P | 2021-06-30 | 2021-06-30 | |
| US17/390,938 US11347886B1 (en) | 2021-06-30 | 2021-07-31 | Secure multi-party encrypted identifier data sharing |
| US17/664,135 US12353583B2 (en) | 2021-06-30 | 2022-05-19 | Secure multi-party encrypted identifier data sharing |
| US18/162,709 US12353586B2 (en) | 2021-06-30 | 2023-01-31 | Secure encrypted identifier data sharing |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/664,135 Continuation US12353583B2 (en) | 2021-06-30 | 2022-05-19 | Secure multi-party encrypted identifier data sharing |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20230169203A1 US20230169203A1 (en) | 2023-06-01 |
| US12353586B2 true US12353586B2 (en) | 2025-07-08 |
Family
ID=81756606
Family Applications (3)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/390,938 Active US11347886B1 (en) | 2021-06-30 | 2021-07-31 | Secure multi-party encrypted identifier data sharing |
| US17/664,135 Active 2041-09-12 US12353583B2 (en) | 2021-06-30 | 2022-05-19 | Secure multi-party encrypted identifier data sharing |
| US18/162,709 Active 2041-09-12 US12353586B2 (en) | 2021-06-30 | 2023-01-31 | Secure encrypted identifier data sharing |
Family Applications Before (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/390,938 Active US11347886B1 (en) | 2021-06-30 | 2021-07-31 | Secure multi-party encrypted identifier data sharing |
| US17/664,135 Active 2041-09-12 US12353583B2 (en) | 2021-06-30 | 2022-05-19 | Secure multi-party encrypted identifier data sharing |
Country Status (1)
| Country | Link |
|---|---|
| US (3) | US11347886B1 (en) |
Families Citing this family (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11347886B1 (en) | 2021-06-30 | 2022-05-31 | Snowflake Inc. | Secure multi-party encrypted identifier data sharing |
| US12067019B2 (en) | 2021-11-30 | 2024-08-20 | Snowflake Inc. | Dynamic data restriction in a database clean room |
| US12008135B2 (en) | 2021-12-21 | 2024-06-11 | Commvault Systems, Inc. | Controlling information privacy in a shared data storage management system |
| US12067005B2 (en) * | 2022-06-13 | 2024-08-20 | Snowflake Inc. | Data clean room using defined access via native applications |
| US11922456B1 (en) * | 2022-09-28 | 2024-03-05 | Amazon Technologies, Inc. | Advertising analysis using data clean rooms |
| CN116610738B (en) * | 2023-06-14 | 2025-10-03 | 宁波浙鼎教育科技有限公司 | A cloud data retrieval method, system, storage medium and intelligent terminal |
| CN116933321A (en) * | 2023-08-07 | 2023-10-24 | 北京火山引擎科技有限公司 | Database processing methods, devices, equipment and media |
| US12197400B1 (en) * | 2023-09-25 | 2025-01-14 | Databricks, Inc. | Clean room generation for data collaboration |
| CN117319084B (en) * | 2023-11-28 | 2024-01-30 | 遂宁市中心医院 | Medical examination data sharing method and system based on cloud authentication |
| CN119203233B (en) * | 2024-09-20 | 2025-07-22 | 广东横琴乾和智劲科技有限公司 | System and method for sharing and verifying matching of technical database based on block chain technology |
Citations (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20150149362A1 (en) | 2015-02-04 | 2015-05-28 | vitaTrackr, Inc. | Encryption and Distribution of Health-related Data |
| US9087212B2 (en) * | 2012-01-25 | 2015-07-21 | Massachusetts Institute Of Technology | Methods and apparatus for securing a database |
| US20150309980A1 (en) * | 2012-12-11 | 2015-10-29 | Ariadne Insight Limited | A framework for enabling user-defined functions |
| US9311500B2 (en) * | 2013-09-25 | 2016-04-12 | Amazon Technologies, Inc. | Data security using request-supplied keys |
| US20180196955A1 (en) | 2017-01-10 | 2018-07-12 | Snowflake Computing, Inc. | Data sharing in a multi-tenant database system |
| US10153897B1 (en) | 2018-02-14 | 2018-12-11 | Capital One Services, Llc | Custom encryption function for communications between a client device and a server device |
| US20200042734A1 (en) * | 2018-08-06 | 2020-02-06 | Snowflake Inc. | Secure Data Sharing In A Multi-Tenant Database System |
| US20200304507A1 (en) | 2019-03-19 | 2020-09-24 | Capital One Services, Llc | Systems and methods for secure data access control |
| US10789373B2 (en) | 2011-10-31 | 2020-09-29 | Reid Consulting Group, Inc. | System and method for securely storing and sharing information |
| US20210243018A1 (en) | 2020-01-30 | 2021-08-05 | Apple Inc. | Data encryption for emergency response |
| US20210319128A1 (en) * | 2020-04-13 | 2021-10-14 | Switchbit, Inc. | Managing queries with data processing permits |
| US20220019479A1 (en) * | 2020-07-14 | 2022-01-20 | Affinio Inc. | Method and system for secure distributed software-service |
| US11347886B1 (en) | 2021-06-30 | 2022-05-31 | Snowflake Inc. | Secure multi-party encrypted identifier data sharing |
-
2021
- 2021-07-31 US US17/390,938 patent/US11347886B1/en active Active
-
2022
- 2022-05-19 US US17/664,135 patent/US12353583B2/en active Active
-
2023
- 2023-01-31 US US18/162,709 patent/US12353586B2/en active Active
Patent Citations (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10789373B2 (en) | 2011-10-31 | 2020-09-29 | Reid Consulting Group, Inc. | System and method for securely storing and sharing information |
| US9087212B2 (en) * | 2012-01-25 | 2015-07-21 | Massachusetts Institute Of Technology | Methods and apparatus for securing a database |
| US20150309980A1 (en) * | 2012-12-11 | 2015-10-29 | Ariadne Insight Limited | A framework for enabling user-defined functions |
| JP2021022945A (en) * | 2013-09-25 | 2021-02-18 | アマゾン テクノロジーズ インコーポレイテッド | Data security using request-supplied keys |
| US9311500B2 (en) * | 2013-09-25 | 2016-04-12 | Amazon Technologies, Inc. | Data security using request-supplied keys |
| US20150149362A1 (en) | 2015-02-04 | 2015-05-28 | vitaTrackr, Inc. | Encryption and Distribution of Health-related Data |
| US20180196955A1 (en) | 2017-01-10 | 2018-07-12 | Snowflake Computing, Inc. | Data sharing in a multi-tenant database system |
| US10153897B1 (en) | 2018-02-14 | 2018-12-11 | Capital One Services, Llc | Custom encryption function for communications between a client device and a server device |
| US20200042734A1 (en) * | 2018-08-06 | 2020-02-06 | Snowflake Inc. | Secure Data Sharing In A Multi-Tenant Database System |
| US20200304507A1 (en) | 2019-03-19 | 2020-09-24 | Capital One Services, Llc | Systems and methods for secure data access control |
| US20210243018A1 (en) | 2020-01-30 | 2021-08-05 | Apple Inc. | Data encryption for emergency response |
| US20210319128A1 (en) * | 2020-04-13 | 2021-10-14 | Switchbit, Inc. | Managing queries with data processing permits |
| US20220019479A1 (en) * | 2020-07-14 | 2022-01-20 | Affinio Inc. | Method and system for secure distributed software-service |
| US11347886B1 (en) | 2021-06-30 | 2022-05-31 | Snowflake Inc. | Secure multi-party encrypted identifier data sharing |
| US20230004670A1 (en) | 2021-06-30 | 2023-01-05 | Snowflake Inc. | Secure multi-party encrypted identifier data sharing |
Non-Patent Citations (18)
Also Published As
| Publication number | Publication date |
|---|---|
| US12353583B2 (en) | 2025-07-08 |
| US20230004670A1 (en) | 2023-01-05 |
| US20230169203A1 (en) | 2023-06-01 |
| US11347886B1 (en) | 2022-05-31 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12353586B2 (en) | Secure encrypted identifier data sharing | |
| US12001581B2 (en) | Query processing in a secure data clean room | |
| US11501015B2 (en) | Secure machine learning using shared data in a distributed database | |
| US12314444B2 (en) | Secure data comparison using data clean rooms | |
| US12067019B2 (en) | Dynamic data restriction in a database clean room | |
| US11809600B2 (en) | Data clean room | |
| US11763029B2 (en) | Data clean rooms using defined access with homomorphic encryption | |
| US11995126B2 (en) | Projection constraints enforced in a database system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| AS | Assignment |
Owner name: SNOWFLAKE INC., MONTANA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LANGSETH, JUSTIN;RAINEY, MICHAEL EARLE;STRATTON, WILLIAM L., JR.;SIGNING DATES FROM 20210909 TO 20210913;REEL/FRAME:063050/0887 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT RECEIVED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |