3 ms·
I have used a couple of license management systems for an engineering simulation tool. We first used the Sentinel Super Pro USB hardware dongles. These provid
by fian 10y ago
I have used a couple of license management systems for an engineering simulation tool. We first used the Sentinel Super Pro USB hardware dongles. These provided strong license protection and were easy to integrate. The downsides were that you had to send customers physical keys and occasionally keys were "lost" when they were due to be returned.
We wanted to protect against this but, at the time, the keys did not have any built in date tracking so we tried to implement last date used tracking by writing a timestamp to the keys every few minutes - this proved to be quite flaky and keys would eventually become corrupt. The keys could be recovered by rewriting the original license file, but it was annoying to the users.
There are newer Sentinel keys that include an onboard, battery backed clock which we could have migrated to to solve that problem.
However, our company was acquired and the software team was merged into a larger group. The larger group had standardised on a third party software based license management system. So we migrated the simulation software to this system based on some guidance from the other teams. The migration was painful, taking many weeks. The functionality provided by the license management system is far less flexible than what we could do with the dongles. The license management system worked by fingerprinting the client machine via various keys/ids of installed hardware. The license files contain an unencrypted list of the keys/ids that the license was checking. So it is trivial for someone to read the license file and know exactly how to modify or fake the keys on a second machine to replicate the license. It took me less than 15 mins to perform a license replication to a second machine using just the license file and tools available as part of the default OS installation.
Realising this, I read the docs thoroughly myself as it seemed crazy that this could be the correct way to implement the license management system. Sadly it was correct. If effect the docs said a pure software approach is weak and if you need stronger protection you should use a hardware dongle. This is essentially why they call it a license "management" system vs a license "protection" system.
You should choose a license system based on who you target market is and how much you sell the software for.
If you are selling to the general public, having many users and (probably) lower license fees, then look to the pure software based solutions as managing hardware dongles will be onerous. If the pricing is reasonable and you make it easy for people to buy/renew then there is less incentive for them to pirate.
If you are selling to a enterprise or niche market with high license fees (thousands of dollars per licenses and up) then there is a stronger incentive for someone to try to break your licensing system. This is where a hardware based solution starts to make sense.
Note that even the hardware dongles can be beaten by a truly determined attacker. By going the dongle route you are just raising the bar higher.