Software engineers forget that the general public isn't capable of or willing to generate a private key and keep it secure for the long term. It's a deal breaker. Crypto isn't the answer.
It's also over engineering. A serial number and a registration process can go a long way.