You can't trust the infra; Encrypt client side
jve.linuxwall.info
jve.linuxwall.info
I helped implement a system for Stellar that does something very similar to what this article describes [2]. User data is encrypted into blobs using a key generated from credentials. The blob is fetched from the server using a hash of those credentials. Neither the server nor a MITM have sufficient information to decrypt your blob, so the security is deferred to each user's computer.
If you want a server to be able to access your data, you must acknowledge that there is a non-zero probability that it will become public. If you want truly private data you must encrypt it locally and take the appropriate measures to keep your local system secure.
[1] https://www.nccgroup.trust/us/about-us/newsroom-and-events/b...
[2] https://www.stellar.org/blog/wallet-server-version-two-the-e...
It's OK to improve security incrementally. Better security is the path to the best security.