A system for secure data analysis based upon encrypted data, the system comprising: a processing unit configured to perform operations comprising: creating an encryption key; creating a decryption key, security of encryption using the encryption key and the decryption key based upon factoring, and the encryption key and the decryption key are private; creating a computation key based upon the encryption key; encrypting, using the encryption key, data to create the encrypted data; providing the encrypted data and the computation key to a remote system; requesting the remote system perform data analysis on the encrypted data, the remote system uses the computation key to perform the data analysis on the encrypted data, the data analysis comprises training a model, the encrypted result of the data analysis comprises a final trained machine learning model, the data comprises a vector of numbers, and the final trained machine learning model comprises a result of an operation performed on the encrypted vector of numbers; receiving from the remote system an encrypted intermediate trained machine learning model; decrypting the encrypted intermediate trained machine learning model, the intermediate trained machine learning model comprising a weight represented by a numerator and a denominator; rounding the weight to reduce the number of digits in the numerator and the denominator to create an updated trained machine learning model; encrypting the updated trained machine learning model with the encryption key; providing the updated trained machine learning model to the remote system, the final trained machine learning based on the updated trained machine learning model; receiving, from the remote system, an encrypted result of the data analysis, the encrypted result of the data analysis encrypted with the encryption key; and decrypting the encrypted result of the data analysis with the decryption key. a processing unit configured to perform operations comprising: creating an encryption key; creating a decryption key, security of encryption using the encryption key and the decryption key based upon factoring, and the encryption key and the decryption key are private; creating a computation key based upon the encryption key; encrypting, using the encryption key, data to create the encrypted data; providing the encrypted data and the computation key to a remote system; requesting the remote system perform data analysis on the encrypted data, the remote system uses the computation key to perform the data analysis on the encrypted data, the data analysis comprises training a model, the encrypted result of the data analysis comprises a final trained machine learning model, the data comprises a vector of numbers, and the final trained machine learning model comprises a result of an operation performed on the encrypted vector of numbers; receiving from the remote system an encrypted intermediate trained machine learning model; decrypting the encrypted intermediate trained machine learning model, the intermediate trained machine learning model comprising a weight represented by a numerator and a denominator; rounding the weight to reduce the number of digits in the numerator and the denominator to create an updated trained machine learning model; encrypting the updated trained machine learning model with the encryption key; providing the updated trained machine learning model to the remote system, the final trained machine learning based on the updated trained machine learning model; receiving, from the remote system, an encrypted result of the data analysis, the encrypted result of the data analysis encrypted with the encryption key; and decrypting the encrypted result of the data analysis with the decryption key. creating an encryption key; creating a decryption key, security of encryption using the encryption key and the decryption key based upon factoring, and the encryption key and the decryption key are private; creating a computation key based upon the encryption key; encrypting, using the encryption key, data to create the encrypted data; providing the encrypted data and the computation key to a remote system; requesting the remote system perform data analysis on the encrypted data, the remote system uses the computation key to perform the data analysis on the encrypted data, the data analysis comprises training a model, the encrypted result of the data analysis comprises a final trained machine learning model, the data comprises a vector of numbers, and the final trained machine learning model comprises a result of an operation performed on the encrypted vector of numbers; receiving from the remote system an encrypted intermediate trained machine learning model; decrypting the encrypted intermediate trained machine learning model, the intermediate trained machine learning model comprising a weight represented by a numerator and a denominator; rounding the weight to reduce the number of digits in the numerator and the denominator to create an updated trained machine learning model; encrypting the updated trained machine learning model with the encryption key; providing the updated trained machine learning model to the remote system, the final trained machine learning based on the updated trained machine learning model; receiving, from the remote system, an encrypted result of the data analysis, the encrypted result of the data analysis encrypted with the encryption key; and decrypting the encrypted result of the data analysis with the decryption key.