I'm trying to protect my JavaFX code beyond that of ProGuard. I understand that any code that a user has in their possession is fair game. That means I need to move all my sensitive business logic onto a server which can be confidently protected.
Due to my limited server-side experience I'm looking for an explanation/example of how to develop the client-server connection so it's secure and reasonably fast. My main confusion relates to what is required in the client-side code such as server initialization and get
/put
requests(?), and also which files or code I put on the server (and where).
I've linked 3 quotes below from relevant answers to provide some background. The posts respectively are found here, here and here. The first one states:
we "protect" our software by having part of the computation happening on the server side: we have several .class that won't work unless they're generated from the server side and we send them down the wire (and what is sent on the wire is always different: we're generating unique, one-off .class files on the server side).
This suggests to generate entire class files on the server side. A few of my classes I'd want to fully have on the server, but many class files only contain methods which are sensitive and would need to be server based. The second link states:
Move the most critical parts of the service out of the app, and into a web service, hidden behind a server side language like PHP. Move the algorithm and have it process the data on a remote server, and use the app to simply provide it with the data.
This seems more aligned with my intentions but I'm confused how to perform these "move" and "processing" functions. Do I simply replace the sensitive methods/class calls with get() requests to the server, which is behind a SSL connection provided by any basic server provider? Can you find a relevant full example?
Third quote:
Set up a server that responds to requests from your app, "uses" the assets (whatever that might mean) and then sends the result back to the app.
Once again, an example of how to "request", "use", and "send" entire methods/classes in a JavaFX context would be excellent. I'm willing to read all day, I just need guidance on this initial step so I start on the right foundation.