I'm developing an application that will encrypt a bunch of files the client has on their machine and then send them to a server, to back them up. I need to encrypt the files so that other clients/third parties can't access them. The problem is that I'd like to have a key hard-coded, to reduce the complexity of my program, but I can't have all clients share the same key or have third parties decompile the binary file to get the key (I know that hard-coded keys are a Bad Idea). Note that it's not viable to use plain assymetric key encryption since the performance would not be good enough.
The solution I've came up with consists of hard-coding the public key of a public-private key pair that belongs to the server, which I would use to encrypt a symmetric key, and then generate a random number (used as a symmetric key), encrypt the necessary files with it and then encrypt the symmetric key with the public key and send it to a database on the server, over a network. The point t of using assymetric key encryption is so that the transmission of the key is secure.
How secure is this protocol? Will it suffice to use a PRNG? Is there a better existing protocol?