A multi-party privacy-preserving machine learning system is described which has a trusted execution environment comprising at least one protected memory region. An code loader at the system loads machine learning code, received from at least one of the parties, into the protected memory region. A data uploader uploads confidential data, received from at least one of the parties, to the protected memory region. The trusted execution environment executes the machine learning code using at least one data-oblivious procedure to process the confidential data and returns the result to at least one of the parties, where a data-oblivious procedure is a process where any patterns of memory accesses, patterns of disk accesses and patterns of network accesses are such that the confidential data cannot be predicted from the patterns.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A multi-party privacy-preserving machine learning system comprising: a trusted execution environment comprising at least one protected memory region; a code loader which loads machine learning code, received from at least one of the parties, into the protected memory region; and a data uploader which uploads confidential data, received from at least one of the parties, to the protected memory region; where the trusted execution environment executes the machine learning code using a data-oblivious procedure to process the confidential data and return the result to at least one of the parties, where a data-oblivious procedure is a process where any patterns of memory accesses, patterns of disk accesses and patterns of network accesses are such that the confidential data cannot be predicted from the patterns. 2. The multi-party privacy-preserving machine learning system of claim 1 wherein the trusted execution environment executes the machine learning code either to train a machine learning system or to use an already trained machine learning system to generate predictions. 3. The multi-party privacy-preserving machine learning system of claim 1 wherein the trusted execution environment implements the data-oblivious procedure using oblivious random access memory to access the confidential data, and wherein the machine learning code is adapted to use the oblivious random access memory. 4. The multi-party privacy-preserving machine learning system of claim 1 wherein the trusted execution environment implements the data-oblivious procedure using machine learning code which is data-oblivious. 5. The multi-party privacy-preserving machine learning system of claim 1 wherein the trusted execution environment implements the data-oblivious procedure using combinations of one or more data oblivious primitives, at least one of the data-oblivious primitives being an operation to access an array by scanning the array at cache-line granularity rather than at element or byte granularity. For example, by using vector instructions 6. The multi-party privacy preserving machine learning system of claim 5 wherein a vector operation is used to implement the scanning of the array at cache-line granularity. 7. The multi-party privacy-preserving machine learning system of claim 1 where the received data comprises labeled training data, and wherein the data uploader or the trusted execution environment is configured to securely shuffle the labeled training data prior to execution of the machine learning code. 8. The multi-party privacy-preserving machine learning system of claim 7 wherein the secure shuffle comprises an oblivious implementation of a sorting process or a random permutation of the training data hidden from an adversary. 9. The multi-party privacy-preserving machine learning system of claim 1 wherein the trusted execution environment uses a data-oblivious procedure which iteratively computes centroids of clusters of data. 10. The multi-party privacy-preserving machine learning system of claim 1 wherein the trusted execution environment uses a data-oblivious procedure which iteratively computes weights of a support vector machine. 11. The multi-party privacy-preserving machine learning system of claim 1 wherein the trusted execution environment uses a data-oblivious procedure which computes a piece-wise approximation of a neural network transformation. 12. The multi-party privacy-preserving machine learning system of claim 1 wherein the trusted execution environment uses a data-oblivious procedure which computes an evaluation of a decision tree. 13. The multi-party privacy-preserving machine learning system of claim 12 wherein the trusted execution environment stores the decision tree as a plurality of arrays of nodes and evaluates the decision tree by traversing the tree and scanning the arrays. 14. The multi-party privacy-preserving machine learning system of claim 1 wherein the trusted execution environment uses a data-oblivious procedure which computes a matrix factorization by obliviously scanning at least one matrix comprising rows of user data and rows of item data, the rows being interleaved such that a scan of a column of the matrix outputs data for an individual user at a specified rate. 15. A method at a multi-party privacy-preserving machine learning system comprising: loading machine learning code, received from at least one of the parties, into a protected memory region at a trusted execution environment; uploading confidential data, received from at least one of the parties, to the protected memory region; and executing the machine learning code in the trusted execution environment using a data-oblivious procedure to process the confidential data and return the result to at least one of the parties, where a data-oblivious procedure is a process where any patterns of memory accesses, patterns of disk accesses and patterns of network accesses are such that the confidential data cannot be predicted from the patterns. 16. The method of claim 15 comprising securely shuffling the confidential data in the protected memory region. 17. The method of claim 15 comprising executing the machine learning code as either a training process or a test time process. 18. The method of claim 15 comprising implementing the data-oblivious procedure using oblivious random access memory to access the confidential data, and wherein the machine learning code is adapted to use the oblivious random access memory. 19. The method of claim 15 comprising implementing the data-oblivious procedure using machine learning code which is data-oblivious. 20. A multi-party privacy-preserving machine learning system comprising: means for loading machine learning code, received from at least one of the parties, into a protected memory region at a trusted execution environment; means for uploading confidential data, received from at least one of the parties, to the protected memory region and securely shuffling the confidential data in the protected memory region; and means for executing the machine learning code using a data-oblivious procedure to process the confidential data and return the result to at least one of the parties, where a data-oblivious procedure is a process where any patterns of memory accesses, patterns of disk accesses and patterns of network accesses are such that the confidential data cannot be predicted from the patterns.