I am willing to create a server side licensing system for my commercial softwares but not really sure what cryptography method I should be using for best possible security per the standard of modern cryptography and how should I implement the method.
My first requirement for the software that I am delivering, is to always be connected with the authorization or licensing server online in order to function. Secondly, I would be able to hand out a license key to the user and probably a public or private key to the user or the piece of software binary as needed. So, the client needs to prove to the server that it has a valid license key for the software and it has a valid software executable binary on constant basis as long as it is connected to the internet. So, basically it should be a 3 way verification system that I am trying to implement which will verify the software binary, verify the user and verify the license the user holds.
Now, what type of key pair cryptography I can be using in this regard and in what manner should I use them in client and server side? RSA, DSA, ECC, ECDSA or any other better alternative?
What could be the best approach for a system like this for best possible security and reliability?